欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Node.js中常規(guī)的文件操作總結(jié)

 更新時(shí)間:2016年10月13日 09:20:54   作者:子匠_Zijor  
關(guān)于Node.js中文件的常規(guī)操作,主要的就是fs這個(gè)模塊。對(duì)于node.js中fs模塊提供的API很多,但是其所有的方法均有同步和異步的形式。那么下面這篇文章我們就來(lái)詳細(xì)介紹下關(guān)于Node.js中文件的常規(guī)操作,有需要的朋友們可以參考借鑒。

前言

Node.js 提供一組類(lèi)似 UNIX(POSIX)標(biāo)準(zhǔn)的文件操作API。 Node 導(dǎo)入文件系統(tǒng)模塊(fs)語(yǔ)法如下所示:

var fs = require("fs")

fs模塊是文件操作的封裝,它提供了文件的讀取、寫(xiě)入、更名、刪除、遍歷目錄、鏈接等POSIX文件系統(tǒng)操作。與其他模塊不同的是,fs模塊中所有的操作都提供了異步和同步的兩個(gè)版本,例如讀取文件內(nèi)容的函數(shù)有異步的fs.readFile()和同步的fs.readFileSync() 。

一. 目錄操作

1. 創(chuàng)建目錄

創(chuàng)建目錄的語(yǔ)法如下:

fs.mkdir(path[, mode], callback) // 異步方法
fs.mkdirSync(path[, mode]) // 同步方法

示例:

var fs = require("fs");

// 在該文件的同一目錄下建立test目錄
fs.mkdir('test',function(err){
 if (err) {
  return console.error(err);
 }
 console.log("目錄創(chuàng)建成功。");
});

2. 讀取目錄

讀取目錄的語(yǔ)法如下:

fs.readdir(path, callback)
fs.readdirSync(path)

     1、path: 文件路徑;

     2、callback: 回調(diào)函數(shù),回調(diào)函數(shù)帶有兩個(gè)參數(shù)err, files。err為錯(cuò)誤信息,files為目錄下的文件數(shù)組列表。

示例:

var fs = require("fs");

fs.readdir("test/",function(err, files){
 if (err) {
  return console.log(err);
 }
 files.forEach( function (file){
  console.log( file );
 });
});

3. 刪除目錄

刪除目錄的語(yǔ)法如下:

fs.rmdir(path, callback)
fs.rmdirSync(path)

示例:

var fs = require("fs");

fs.rmdir("test/ewe",function(err){
 if (err) {
  return console.log(err);
 }

 fs.readdir("/test/",function(err, files){
  if (err) {
   return console.error(err);
  }
  files.forEach( function (file){
   console.log( file );
  });
 });
});

二. 文件操作

1. 打開(kāi)文件

打開(kāi)文件的語(yǔ)法如下:

fs.open(path, flags, [mode], [callback(err, fd)])

其中,path為文件的路徑,flags指文件的讀取方式,mode參數(shù)用于創(chuàng)建文件時(shí)給文件指定權(quán)限,默認(rèn)是0666.回掉函數(shù)將會(huì)傳遞一個(gè)文件描述符fd。

flags的常用參數(shù)值如下:

mode參數(shù)表示的文件權(quán)限是POSIX操作系統(tǒng)中對(duì)文件讀取和訪問(wèn)權(quán)限的規(guī)范,通常用一個(gè)八進(jìn)制數(shù)來(lái)表示。例如0754表示文件所有者的權(quán)限是7(讀、寫(xiě)、執(zhí)行),同組的用戶權(quán)限是5(讀、執(zhí)行),其他用戶的權(quán)限是4(讀)。

示例:

var fs = require('fs');

fs.open("test.txt","w",0644,function(e,fd){
 try{
  fs.write(fd,"first fs!",0,'utf8',function(e){
   fs.closeSync(fd);
  })
 } catch(E) {
  throw e;
 }

});

2. 寫(xiě)入文件

寫(xiě)入文件的語(yǔ)法如下:

fs.writeFile(file, data[, options], callback)
fs.writeFileSync(file, data[, options])

示例:

var fs = require("fs");

fs.writeFile('test.txt', 'hello world!', function(err) {
 if (err) {
  return console.log(err);
 }

 fs.readFile('test.txt', function (err, data) {
  if (err) {
   return console.log(err);
  }
  console.log("異步讀取文件數(shù)據(jù): " + data.toString());
 });
});

3. 讀取文件

讀取文件的語(yǔ)法如下:

fs.read(fd, buffer, offset, length, position, callback)
fs.readSync(fd, buffer, offset, length, position)

fs.readFile(file[, options], callback)
fs.readFileSync(file[, options])

其中,fs.read()fs.readSync()的參數(shù)如下:

     fd – 通過(guò) fs.open() 方法返回的文件描述符;

     buffer – 數(shù)據(jù)寫(xiě)入的緩沖區(qū);

     offset – 緩沖區(qū)寫(xiě)入的寫(xiě)入偏移量;

     length – 要從文件中讀取的字節(jié)數(shù);

     position – 文件讀取的起始位置,如果 position 的值為 null,則會(huì)從當(dāng)前文件指針的位置讀取;

     callback – 回調(diào)函數(shù),有三個(gè)參數(shù)err, bytesRead, buffer,err 為錯(cuò)誤信息, bytesRead 表示讀取的字節(jié)數(shù),buffer 為緩沖區(qū)對(duì)象;

fs.read()的示例如下:

var fs = require('fs'); 
fs.open('test.txt', 'r', function(err, fd) { 
if (err) { 
console.error(err); 
return; 
} 
var buf = new Buffer(8); 
fs.read(fd, buf, 0, 8, null, function(err, bytesRead, buffer) { 
if (err) { 
console.error(err); 
return; 
} 
console.log('bytesRead: ' + bytesRead); 
console.log(buffer); 
}) 
});

fs.readFile()的示例如下:

var fs = require('fs'); 
fs.readFile('test.txt', function(err, data) { 
 if (err) { 
  console.log(err); 
 } else { 
  console.log(data.toString()); 
 } 
});

4. 關(guān)閉文件

關(guān)閉文件的語(yǔ)法如下:

fs.close(fd, callback)
fs.closeSync(fd)

5. 刪除文件

刪除文件的語(yǔ)法如下:

fs.unlink(path, callback)
fs.unlinkSync(path)

示例:

var fs = require("fs");

fs.unlink('test.txt', function(err) {
 if (err) {
  return console.log(err);
 }
 console.log("文件刪除成功!");
});

6. 確定文件是否存在

確定文件是否存在的語(yǔ)法如下:

fs.exists(path, callback)
fs.existsSync(path)

示例:

var fs = require('fs');

fs.exists('test.txt', function (exists) {
 if(exists) {
  console.log("文件存在!");
 }else {
  console.log("文件不存在!");
 }
});

7. 追加內(nèi)容至文件

fs.appendFile(file, data[, options], callback)
fs.appendFileSync(file, data[, options])

示例:

var fs = require('fs');

fs.appendFile("test.txt", "append content", function (err) {
 if (err) {
  console.log(err);
 }else {
  fs.readFile('test.txt', function(err, data) { 
   if (err) { 
    console.log(err); 
   } else { 
    console.log(data.toString()); 
   } 
  }); 
 }
});

總結(jié)

更多的文件系統(tǒng)操作可查看Node.js的fs模塊的官方API文檔,以上就是關(guān)于Node.js中文件常規(guī)操作的全部?jī)?nèi)容,希望這篇文章對(duì)大家學(xué)習(xí)或者使用Node.js能有所幫助,如果有疑問(wèn)大家可以留言交流。

相關(guān)文章

最新評(píng)論