(三)fs文件操作模塊

fs模塊用于文件的讀寫等操作。
該模塊有如下這些方法:

1、fs.stat() : 檢測是文件還是目錄

const fs = require('fs');

fs.stat('test.html',function(err,stats){
    if(err){
        console.log(err);
    }else{
        console.log('文件:' + stats.isFile());        //true
        console.log('目錄:' + stats.isDirectory());   //false
    }
});

2、fs.mkdir():創(chuàng)建目錄

接受如下幾個參數(shù):

  • path :將創(chuàng)建的目錄路徑
  • mode :目錄權(quán)限(讀寫權(quán)限),默認0777
  • callback :回調(diào),傳遞異常參數(shù)err
fs.mkdir('css',function(err){
    if(err){
        console.log(err);
    }else{
        console.log("創(chuàng)建成功");
    }
});

3、fs.writeFile():寫入文件

  • filename (String) 文件名稱
  • data (String | Buffer) 將要寫入的內(nèi)容,可以使字符串 或 buffer數(shù)據(jù)。
  • options (Object) option數(shù)組對象,包含 :
    • · encoding (string) 可選值,默認 ‘utf8′,當data使buffer時,該值應(yīng)該為 ignored。
    • · mode (Number) 文件讀寫權(quán)限,默認值 438
    • · flag (String) 默認值 ‘w'
  • callback {Function} 回調(diào),傳遞一個異常參數(shù)err。
var str = "Hello Node.js";
fs.writeFile('write.txt', str, 'utf8', function (err) {
    if (err) {
        console.log(err);
    }else{
        console.log("創(chuàng)建成功");
    }
});

如果該文件不存在則創(chuàng)建該名稱文件并寫入數(shù)據(jù)。如果多次寫入的話,那么后面寫入的內(nèi)容會覆蓋前面寫入的內(nèi)容。

4、fs.appendFile():追加文件

用法與writeFile相同,只是對此寫入的話不會覆蓋之前的數(shù)據(jù),而是在其后追加數(shù)據(jù)。

5、fs.readFile() :讀取文件

回調(diào)函數(shù)中的data即包含了讀取的數(shù)據(jù)。

fs.readFile('write.txt',function(err,data){
    if(err){
        console.log(err);
    }else{
        console.log(data.toString());
    }
});

6、fs.readdir():讀取目錄,獲取目錄下面的文件和文件夾。

fs.readdir('css',function(err,data){
    if (err){
        console.log(err);
    }else{
        console.log(data);
    }
});

不過這樣只能獲取第一級目錄

7、fs.rename():重命名文件

fs.rename('html/index.html','html/news.html',function(err){
  if (err) {
    console.log(err);
  } else {
    console.log('修改名字成功');
  }
})

這樣就可以把index.html文件名修改為news.html。

這個方法還可以實現(xiàn)文件剪切功能:

fs.rename('html/css/basic.css','html/style.css',function(err){

    if(err){
     console.log(err);
     return false;
   }
   console.log('剪切成功');
})

這樣就可以把html/css/basic.css剪切到html/style.css

8、fs.redir():刪除目錄

fs.rmdir('text',function(err){
     if(err){
      console.log(err);

      return false;
    }
   console.log('刪除目錄成功');
})

這里的刪除只能刪除空目錄。

9、fs.unlink():刪除文件

fs.unlink('index.txt',function(err){

       if(err){
          console.log(err);
          return false;
     }
    console.log('刪除文件成功');
})

10、fs.createReadStream():以流的方式讀取數(shù)據(jù)

這種方式讀取文件是分塊讀取的

// 創(chuàng)建一個可以讀取的流,讀取文件 input.txt 中
var readStream=fs.createReadStream('input.txt');

var str='';/*保存數(shù)據(jù)*/
var count=0;  /*次數(shù)*/

//觸發(fā)data事件,開始取讀數(shù)據(jù)
readStream.on('data',function(chunk){
    str+=chunk;
    count++;
})

//觸發(fā)end事件,讀取完成
readStream.on('end',function(chunk){
    console.log(count);
    console.log(str);
})

//讀取失敗
readStream.on('error',function(err){
    console.log(err);
})

這種讀取方式很高效,適合取讀大批量數(shù)據(jù)。如果所讀數(shù)據(jù)量不是很大的話使用上面的readFile方法即可。

11、fs.createWriteStream():以流的方式寫入文件

var data = '我是從數(shù)據(jù)庫獲取的數(shù)據(jù),我要保存到文件中去\n';

// 創(chuàng)建一個可以寫入的流,寫入到文件 output.txt 中
var writerStream = fs.createWriteStream('output.txt');

//開始寫入數(shù)據(jù)
writerStream.write(data,'utf8');

//標記寫入完成
writerStream.end();

//觸發(fā)finish事件,完成寫入
writerStream.on('finish',function(){
    console.log('寫入完成');
})

//失敗
writerStream.on('error',function(){
    console.log('寫入失敗');
})

同樣,如果要寫入的文件不存在就創(chuàng)建該文件再寫入。

12、管道流讀取

管道提供了一個輸出流到輸入流的機制。通常我們用于從一個流中獲取數(shù)據(jù)并將數(shù)據(jù)傳遞到另外的一個流中。

// 創(chuàng)建一個可讀流,這是管道的輸出端
var readerStream = fs.createReadStream('input.txt');

// 創(chuàng)建一個可寫流,這是管道的輸入端
var writerStream = fs.createWriteStream('output.txt');

// 管道讀寫操作
// 讀取 input.txt 文件內(nèi)容,并將內(nèi)容寫入到 output.txt 文件中
readerStream.pipe(writerStream);

console.log("程序執(zhí)行完畢");
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • https://nodejs.org/api/documentation.html 工具模塊 Assert 測試 ...
    KeKeMars閱讀 6,610評論 0 6
  • 文件系統(tǒng)模塊是一個封裝了標準的 POSIX 文件 I/O 操作的集合。通過require('fs')使用這個模塊。...
    保川閱讀 940評論 0 0
  • 一、核心模塊和對象 核心模塊的意義 常用內(nèi)置模塊path:處理文件路徑fs:操作文件系統(tǒng)child_process...
    EndEvent閱讀 4,517評論 0 1
  • Node.js是目前非?;馃岬募夹g(shù),但是它的誕生經(jīng)歷卻很奇特。 眾所周知,在Netscape設(shè)計出JavaScri...
    w_zhuan閱讀 3,736評論 2 41
  • //公共引用 varfs =require('fs'), path =require('path'); 1、讀取文...
    才気莮孒閱讀 890評論 0 1

友情鏈接更多精彩內(nèi)容