Node實(shí)現(xiàn)文件I/O使用標(biāo)準(zhǔn)的POSIX函數(shù)的簡(jiǎn)單包裝。Node文件系統(tǒng)(FS)模塊可以使用以下語(yǔ)法輸入:
var fs = require("fs")
在fs模塊的每一個(gè)方法都有同步和異步形式。異步方法需要最后一個(gè)參數(shù)為完成回調(diào)函數(shù)和回調(diào)函數(shù)的第一個(gè)參數(shù)是錯(cuò)誤的。它優(yōu)選使用異步方法來(lái)代替同步方法,前者從來(lái)不阻止程序的執(zhí)行,作為第二使用。
創(chuàng)建一個(gè)名為input.txt的文件有以下內(nèi)容的文本
Yiibai Point is giving self learning content to teach the world in simple and easy way!!!!!
讓我們創(chuàng)建一個(gè)名為具有以下代碼main.js一個(gè)js文件。
var fs = require("fs"); // Asynchronous read fs.readFile('input.txt', function (err, data) { if (err) { return console.error(err); } console.log("Asynchronous read: " + data.toString()); }); // Synchronous read var data = fs.readFileSync('input.txt'); console.log("Synchronous read: " + data.toString()); console.log("Program Ended");
現(xiàn)在運(yùn)行main.js看到的結(jié)果:
$ node main.js
驗(yàn)證輸出
Synchronous read: Yiibai Point is giving self learning content to teach the world in simple and easy way!!!!! Program Ended Asynchronous read: Yiibai Point is giving self learning content to teach the world in simple and easy way!!!!!
以下部分將提供有關(guān)主要文件I/ O方法很好的例子。
以下是在異步模式下打開(kāi)文件的方法的語(yǔ)法:
fs.open(path, flags[, mode], callback)
下面是使用的參數(shù)的說(shuō)明:
path - 這是文件名,包括路徑字符串。
flags - 標(biāo)志告知要打開(kāi)的文件的行為。所有可能的值已經(jīng)提及以下。
mode - 這將設(shè)置文件模式(許可和粘性位),但前提是在創(chuàng)建該文件。它默認(rèn)為0666,讀取和寫入。
callback - 這是回調(diào)函數(shù)得到兩個(gè)參數(shù)(err, fd)。
標(biāo)志進(jìn)行讀/寫操作是:
Flag | 描述 |
---|---|
r | 打開(kāi)文件進(jìn)行讀取。如果該文件不存在發(fā)生異常。 |
r+ | 打開(kāi)文件進(jìn)行讀取和寫入。如果該文件不存在發(fā)生異常。 |
rs | 打開(kāi)文件,用于讀取在同步方式。 |
rs+ | 打開(kāi)文件進(jìn)行讀取和寫入,告訴OS同步地打開(kāi)它。對(duì)于'rs'有關(guān)使用此慎用見(jiàn)注解。 |
w | 打開(kāi)文件進(jìn)行寫入。該文件被創(chuàng)建(如果它不存在)或截?cái)啵ㄈ绻嬖冢?/td> |
wx | 類似'w',如果路徑存在則失敗。 |
w+ | 打開(kāi)文件進(jìn)行讀取和寫入。該文件被創(chuàng)建(如果它不存在)或截?cái)啵ㄈ绻嬖冢?/td> |
wx+ | 類似“w+”,但如果路徑存在則失敗。 |
a | 打開(kāi)文件進(jìn)行追加。如果它不存在,則創(chuàng)建該文件。 |
ax | 類似“a”,但如果路徑存在則失敗。 |
a+ | 打開(kāi)文件進(jìn)行讀取和附加。如果它不存在,則創(chuàng)建該文件。 |
ax+ | 類似'a+',但如果路徑存在則失敗。 |
讓我們創(chuàng)建一個(gè)名為main.js一個(gè)js文件具有下面的代碼,用于打開(kāi)一個(gè)文件input.txt的讀寫。
var fs = require("fs"); // Asynchronous - Opening File console.log("Going to open file!"); fs.open('input.txt', 'r+', function(err, fd) { if (err) { return console.error(err); } console.log("File opened successfully!"); });
現(xiàn)在運(yùn)行main.js看到的結(jié)果:
$ node main.js
驗(yàn)證輸出
Going to open file! File opened successfully!
下面是獲取一個(gè)文件有關(guān)的信息的方法的語(yǔ)法:
fs.stat(path, callback)
下面是使用的參數(shù)的說(shuō)明:
path - 這是有文件名,包括路徑字符串。
callback - 這是回調(diào)函數(shù)得到兩個(gè)參數(shù)(err, stats) ,其中統(tǒng)計(jì)數(shù)據(jù)是這是印在下面的例子中的fs.Stats類型的對(duì)象。
除了這些在下面的例子中打印的重要屬性, 還有可以用于檢查文件類型的fs.Stats類可用的有用的方法。這些方法列于下表中。
方法 | 描述 |
---|---|
stats.isFile() | 返回true,如果文件類型是一個(gè)簡(jiǎn)單的文件 |
stats.isDirectory() | 返回true,如果文件類型是目錄 |
stats.isBlockDevice() | 返回true,如果文件類型是塊設(shè)備 |
stats.isCharacterDevice() | 返回true,如果文件類型是字符設(shè)備 |
stats.isSymbolicLink() | 返回true,如果文件類型是符號(hào)連接 |
stats.isFIFO() | 返回true,如果文件類型是FIFO |
stats.isSocket() | 返回true,如果文件類型是套接字 |
讓我們創(chuàng)建一個(gè)名為main.js的js文件具有下面的代碼:
var fs = require("fs"); console.log("Going to get file info!"); fs.stat('input.txt', function (err, stats) { if (上一篇:Linux安裝Node.js(源碼編譯安裝)下一篇:Node.js事件循環(huán)