(三)fs文件操做模塊

fs模塊用於文件的讀寫等操做。
該模塊有以下這些方法:css

一、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
    }
});

二、fs.mkdir():建立目錄

接受以下幾個參數:html

  • path :將建立的目錄路徑
  • mode :目錄權限(讀寫權限),默認0777
  • callback :回調,傳遞異常參數err
fs.mkdir('css',function(err){
    if(err){
        console.log(err);
    }else{
        console.log("建立成功");
    }
});

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

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

若是該文件不存在則建立該名稱文件並寫入數據。若是屢次寫入的話,那麼後面寫入的內容會覆蓋前面寫入的內容。數據庫

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

用法與writeFile相同,只是對此寫入的話不會覆蓋以前的數據,而是在其後追加數據。數組

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

回調函數中的data即包含了讀取的數據。app

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

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

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

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

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

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

這樣就能夠把index.html文件名修改成news.htmlui

這個方法還能夠實現文件剪切功能:code

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.csshtm

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

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

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

這裏的刪除只能刪除空目錄。對象

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

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

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

十、fs.createReadStream():以流的方式讀取數據

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

// 建立一個能夠讀取的流,讀取文件 input.txt 中
var readStream=fs.createReadStream('input.txt');

var str='';/*保存數據*/
var count=0;  /*次數*/

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

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

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

這種讀取方式很高效,適合取讀大批量數據。若是所讀數據量不是很大的話使用上面的readFile方法便可。

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

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

// 建立一個能夠寫入的流,寫入到文件 output.txt 中
var writerStream = fs.createWriteStream('output.txt');

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

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

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

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

一樣,若是要寫入的文件不存在就建立該文件再寫入。

十二、管道流讀取

管道提供了一個輸出流到輸入流的機制。一般咱們用於從一個流中獲取數據並將數據傳遞到另外的一個流中。

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

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

// 管道讀寫操做
// 讀取 input.txt 文件內容,並將內容寫入到 output.txt 文件中
readerStream.pipe(writerStream);

console.log("程序執行完畢");
相關文章
相關標籤/搜索