node基礎_fs(文件系統)


fs(文件系統File System)

在Node中,與文件系統的交互是非常重要的,服務器的本質就將本地的文件發送給遠程的客戶端。文件系統簡單來說就是通過node來操作系統中的文件。

Node通過fs模塊來和文件系統進行交互。

該模塊提供了一些標准文件訪問API來打開、讀取、寫入文件,以及與其交互。

要使用fs模塊,首先需要對其進行加載,fs模塊是核心模塊,直接引入不需要下載:const fs = require("fs");


同步和異步調用

fs模塊中所有的操作都有兩種形式可供選擇:同步和異步。

同步文件系統會阻塞程序的執行,也就是除非操作完畢,否則不會向下執行代碼。

異步文件系統不會阻塞程序的執行,而是在操作完成時,通過回調函數將結果返回。


同步文件寫入

1,打開文件

fs.openSync(path,flags[, mode])
	中括號([])闊起的內容表示可以有可以沒有
    path:要打開的文件路徑
    flags:打開文件要做的操作類型
        r 只讀的
        w 可寫的
    mode 設置文件的操作權限,一般不傳

該方法會返回一個文件的描述符作為結果,我們可以通過該描述符來對文件進行各種操作。
文件描述符是操作系統打開文件后給你的數字,代表這個文件在操作系統中的對象。

2,向文件中寫入文件

fs.writeSync(fd, string[, position[, encoding]])
	中括號([])闊起的內容表示可以有可以沒有
    fd:文件的描述符,需要傳遞要寫入的文件的描述符
    string:要寫入的內容
        position:表示要寫入的起始位置。
        encoding:寫入的編碼格式。

3,關閉打開的文件

 fs.close(fd[, callback])    
 中括號([])闊起的內容表示可以有可以沒有
    fd:要關閉的文件的描述符

如:

//1,引入文件模塊
let fs=require("fs");
//2,打開文件
let result=fs.openSync("test.txt","w");

//3,同步往文件寫入內容
fs.writeSync(result,"今天天氣真好",6);

//4,關閉文件,如果不關閉,打開的文件會一直在內存里運行,會造成資源浪費。
fs.closeSync(result);

異步文件寫入

1、打開文件

fs.open(path,flags[, mode],callback)
	中括號([])闊起的內容表示可以有可以沒有
    path:要打開的文件路徑
    flags:打開文件要做的操作類型
        r 只讀的
        w 可寫的
    mode 設置文件的操作權限,一般不傳
    callback:回調函數。

異步調用的方法,結果都是通過回調函數的參數返回的。
回調函數callback的兩個參數:
第一個參數er:錯誤對象,如果沒有錯誤則返回null
第二個參數fd:文件的描述符

文件的狀態(flags):
r 讀取文件 , 文件不存在則出現異常
r+ 讀寫文件 , 文件不存在則出現異常
rs 在同步模式下打開文件用於讀取
rs+ 在同步模式下打開文件用於讀寫
w 打開文件用於寫操作 , 如果不存在則創建,如果存在則截斷
wx 打開文件用於寫操作, 如果存在則打開失敗
w+ 打開文件用於讀寫, 如果不存在則創建, 如果存在則截斷
wx+ 打開文件用於讀寫, 如果存在則打開失敗
a 打開文件用於追加, 如果不存在則創建
ax 打開文件用於追加, 如果路徑存在則失敗
a+ 打開文件進行讀取和追加, 如果不存在則創建該文件
ax+ 打開文件進行讀取和追加,如果路徑存在則失敗

2,向文件中寫入文件

fs.write(fd, string[, position[, encoding]],callback)
    中括號([])闊起的內容表示可以有可以沒有
    fd:文件的描述符,需要傳遞要寫入的文件的描述符
    string:要寫入的內容
        position:表示要寫入的起始位置。
        encoding:寫入的編碼格式。
    callback:回調函數。

3,關閉打開的文件

 fs.close(fd[, callback])
    中括號([])闊起的內容表示可以有可以沒有    
    fd:要關閉的文件的描述符

比如:

//1,引入文件模塊
let fs=require("fs");
//2,打開文件
fs.open("test.txt","w",function(error,fd){
    if(!error){
        //3,異步往文件寫入內容
        fs.write(fd,"今天天氣真好",function(err){
            if(!err){
                console.log("寫入成功");
            }
            //關閉打開的文件
            fs.close(fd,function(err2){
                console.log("文件關閉");                           
            });
        });
    }else{
        console.log(error);
    }
});


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM