Node.js中fs模塊的使用方法

引入fs模塊

var fs=require('fs');

1. fs.stat檢測是文件還是目錄

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

2. fs.mkdir 創建目錄

//接收參數:
//path          將創建的目錄路徑
//mode          目錄權限(讀寫權限),默認0777
//callback      回調,傳遞異常參數err

fs.mkdir('css', function (err) {
  if (err) {
    console.log(err);
    return false;
  }
  console.log('創建目錄成功');
})

3. 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。

fs.writeFile('t.txt', '你好nodejs', 'utf8', function (err) {
  if (err) {
    console.log(err);
    return false;
  }
  console.log('寫入成功');
})

4. fs.appendFile 追加文件

fs.appendFile('t.txt', '這是追加的內容', function (err) {
  if (err) {
    console.log(err);
    return false;
  }
  console.log('寫入成功');
})

5.fs.readFile 讀取文件

fs.readFile('t.txt', function (err, data) {
  if (err) {
    console.log(err);
    return false;
  }
  console.log(data);
  console.log(data.toString());
})

6.fs.readdir 讀取目錄

把目錄下面的文件和文件夾都獲取到

fs.readdir('html', function (err, data) {
  if (err) {
    console.log(err);
    return false;
  }
  console.log(data);
})

7.fs.rename 重命名

1、改名 

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

2、剪切文件

fs.rename('html/style.css', 'html/test/basic.css', function (err) {
  if (err) {
    console.log(err);
    return false;
  }
  console.log('剪切成功');
})

8. fs.rmdir 刪除目錄

這個方法隻能刪除目錄,不可以刪除文件

刪除空目錄

fs.rmdir('css', function (err) {
  if (err) {
    console.log(err);
    return false;
  }
  console.log('刪除目錄成功');
})

9. fs.unlink 刪除文件

fs.unlink('css/1.js', function (err) {
  if (err) {
    console.log(err);
    return false;
  }
  console.log('刪除文件成功');
})

10. fs.createReadStream 從文件流中讀取數據

//流的方式讀取文件
var readStream = fs.createReadStream('input.txt');
var str = '';
//保存數據
var count = 0;
//次數
readStream.on('data', function (chunk) {
  str += chunk;
  count++;
})
 
//讀取完成
readStream.on('end', function (chunk) {
  console.log(count);
  console.log(str);
})
 
//讀取失敗
readStream.on('error', function (err) {
  console.log(err);
})

11. fs.createWriteStream 寫入文件

var data = '我是從數據庫獲取的數據,我要保存起來\n';
// 創建一個可以寫入的流,寫入到文件 output.txt 中
var writerStream = fs.createWriteStream('output.txt');
for (var i = 0; i < 100; i++) {
  writerStream.write(data, 'utf8');
}
//標記寫入完成
writerStream.end();
writerStream.on('finish', function () {
  console.log('寫入完成');
})
//失敗
writerStream.on('error', function () {
  console.log('寫入失敗');
})

12. 管道流

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

如上面的圖片所示,我們把文件比作裝水的桶,而水就是文件裡的內容,我們用一根管子(pipe)連接兩個桶使得水從一個桶流入另一個桶,這樣就慢慢的實現瞭大文件的復制過程。

以下實例我們通過讀取一個文件內容並將內容寫入到另外一個文件中。

// 創建一個可讀流
var readerStream = fs.createReadStream('input.txt');
// 創建一個可寫流
var writerStream = fs.createWriteStream('output.txt');
// 管道讀寫操作
// 讀取 input.txt 文件內容,並將內容寫入到 output.txt 文件中
readerStream.pipe(writerStream);
console.log("程序執行完畢");

Demo

判斷服務器上面有沒有upload目錄。沒有創建這個目錄

var fs = require('fs');
fs.stat('upload', function (err, stats) {
  if (err) {  // 沒有這個目錄
    fs.mkdir('upload', function (error) {
      if (error) {
        console.log(error);
        return false;
      }
      console.log('創建成功');
    })
  } else {
    console.log('目錄已經存在');
    console.log(stats.isDirectory());
  }
})

以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: