【node】fs模塊,文件和目錄的操做

檢查文件是否存在,查詢文件信息

  1. fs.stat()
 fs.stat('./server.js', function (err, stat) {
  if (stat && stat.isFile()) {
    console.log('文件存在');
  } else {
    console.log('文件不存在或不是標準文件');
  }
  console.log(stat)
});
  • [x] 判斷文件是否存在node

  • [x] 不能判斷目錄函數

  • [x] 查詢文件信息測試

  • [x] 打印結果:ui

文件存在
Stats {
  dev: 2052,
  mode: 33279,
  nlink: 1,
  uid: 1000,
  gid: 1000,
  rdev: 0,
  blksize: 4096,
  ino: 515557,
  size: 10,
  blocks: 1,
  atimeMs: 1536141106630.312,
  mtimeMs: 1536141106580.8394,
  ctimeMs: 1536141106580.8394,
  birthtimeMs: 1536141106580.8394,
  atime: 2018-09-05T09:51:46.630Z,
  mtime: 2018-09-05T09:51:46.581Z,
  ctime: 2018-09-05T09:51:46.581Z,
  birthtime: 2018-09-05T09:51:46.581Z }
  1. fs.access()
fs.access('/server.js', function(err) {
    console.log(err ? '文件存在' : '文件不存在');
});

判斷文件是否存在spa

fs.access('./server.js', fs.R_OK | fs.W_OK, function(err) {
    console.log(err ? '不可操做!' : '能夠讀/寫');
});
fs.access()用於檢查到指定path路徑的目錄或文件的訪問權限。其回調函數中有一個參數(err),若是檢查失敗則會出現錯誤參數的響應。mode是要檢查的權限掩碼,它能夠是如下枚舉值之一:
  • fs.F_OK - 文件是對於進程是否可見,能夠用來檢查文件是否存在。也是mode 的默認值
  • fs.R_OK - 文件對於進程是否可讀
  • fs.W_OK - 文件對於進程是否可寫
  • fs.X_OK - 文件對於進程是否可執行。(Windows系統不可用,執行效果等同fs.F_OK)

打開文件

fs.open('./server.js','r',function(err,fd){
// 在這裏經過文件描述fs對文件進行操做
})
fs.open()方法第一個參數是文件路徑。每二個參數是標誌位,標誌位表示文件的打開模式。標誌含義與UNIX中fopen的標識位相同:
  • r 打開文本文件進行讀取,數據流位置在文件起始處
  • r+ 打開文本文件進行讀寫,數據流位置在文件起始處
  • w 若是文件存在,將其清零,不存在建立寫入文件。數據流位置在文件起始處
  • w+ 打開文件進行讀寫,若是文件存在,將其清零,不存在建立寫入文件。數據流位置在文件起始處
  • a 打開文件寫入數據,若是文件存在,將其清零,不存在建立寫入文件。數據流位置在文件結尾處,此後的寫操做都將數據追加到文件後面
  • a+ 打開文件進行文件讀寫,若是文件存在,將其清零,不存在建立寫入文件。數據流位置在文件結尾處,此後的寫操做都將數據追加到文件後面

關閉文件

fs.open('./server.js', 'a', function (err, fd) {
    //對文件一些操做
     
    //操做完成後,關閉文件
    fs.close(fd, function(err){
    })
})

文件目錄操做

當咱們須要對目錄進行操做時,能夠用node的fs模塊提供的目錄操做相關方法:==mkidr==,==readdir==,==rmdir==code

  1. 使用==fs.mkdir==建立目錄
fs.mkdir('./test/2',function(err){
  if(err){
    console.log(err)
  }
})

目錄裏多了一個test文件夾 2. 使用==fs.readdir==進行目錄讀取server

fs.readdir('./test',function(err,files){
  if (err) {
    console.log(err)
  }
  console.log(files)
})

test目錄下有1和2兩個文件夾控制檯輸出[ '1', '2' ] 3. 使用==fs.rmdir==進行目錄刪除對象

fs.rmdir('./test/2',function(err){
  if(err){
    console.log(err)
  }
})

當目錄非空、路徑錯誤、非目錄時異常會發生,此時文件夾被刪除了進程

文件目錄的重命名,和文件的刪除

  1. 使用==fs.rename==對文件或者目錄進行重命名
fs.rename('./test','./test1',function(err){
  if(err) throw err;
  console.log('目錄重命名完成')
})

將test重命名爲test1回調函數

fs.rename('./test/1/test.js','./test/1/test1.js',function(err){
  if(err) throw err;
  console.log('文件重命名完成')
})
  1. 使用==fs.unlink==刪除文件
fs.unlink('./test/1/test1.js', function(err) {
  if (err) throw err;
  console.log('文件刪除成功');
});

刪除了test1.js文件

文件的讀寫

node提供==read==,==write==,==readFile==,==createReadStream==, ==writeFile==, ==createWriteStream==來對文件進行讀寫

使用==fs.writeFile==()方法向./text.txt文件寫入內容:

fs.writeFile('./test.txt', '測試', function(err){ 
    if(err){
	console.log(err);
    }
})

使用==fs.readFile==()方法讀./text.txt文件所有內容:

fs.readFile('./test.txt', function(err, data){ 
  //文件內容
  console.log(data.toString());
})

打印結果爲'測試'

fs模塊提供了建立文件可讀流與建立文件可寫讀的方法:fs.createReadStream()和fs. createWriteStream(),這兩個方法分別分返回一個Readable Stream對象和Writable Stream對象。經過這兩個對象,咱們能夠基於流的文件處理,在讀寫大文件及基於流的轉接、暫停、讀取等操做方面有很大的做用。

let readStream = fs.createReadStream('./test.txt') // 建立可讀流
let writeStream = fs.createWriteStream('./server.js') // 建立可寫流

readStream.on('data', function(data){
  writeStream.write(data)
})

讀取text.txt的內容,將其寫入到server.js中,會覆蓋server.js原有內容

相關文章
相關標籤/搜索