1.文件I/O fs模塊的基本用法
開發中我們經常會有文件I/O的需求,node.js中提供一個名爲fs的模塊來支持I/O操作,fs模塊的文件I/O是對標準POSIX函數的簡單封裝。
2.writeFile函數的基本用法 (寫入文件)
文件I/O,寫入是必修課之一。fs模塊提供writeFile函數,可以異步的將數據寫入一個文件, 如果文件已經存在則會被替換。用法如下:
例:fs.writeFile(filename, data, callback)
- var fs= require("fs");
- fs.writeFile('test.txt', 'Hello Node', function (err) {
- if (err) throw err;
- console.log('Saved successfully'); //文件被保存
- });
數據參數可以是string或者是Buffer,編碼格式參數可選,默認爲"utf8",回調函數只有一個參數err。
3.appendFile函數的基本用法(追加寫入)
writeFile函數雖然可以寫入文件,但是如果文件已經存在,我們只是想添加一部分內容,它就不能滿足我們的需求了,很幸運,fs模塊中還有appendFile函數,它可以將新的內容追加到已有的文件中,如果文件不存在,則會創建一個新的文件。使用方法如下:
例:fs.appendFile(文件名,數據,編碼,回調函數(err));
- var fs= require("fs");
- fs.appendFile('test.txt', 'data to append', function (err) {
- if (err) throw err;
- //數據被添加到文件的尾部
- console.log('The "data to append" was appended to file!');
- });
編碼格式默認爲"utf8"。
如何檢查一個文件是否存在呢?我想exists函數可以幫助你,用法如下:
例:fs.exists(文件,回調函數(exists));
exists的回調函數只有一個參數,類型爲布爾型,通過它來表示文件是否存在。
- var fs= require("fs");
- fs.exists('/etc/passwd', function (exists) {
- console.log(exists ? "存在" : "不存在!");
- });
5.rename函數的基本用法(修改名稱)
修改文件名稱是我們經常會遇見的事情,rename函數提供修改名稱服務:
- var fs= require("fs");
- fs.rename(舊文件,新文件,回調函數(err){
- if (err) throw err;
- console.log('Successful modification,');
- });
讀取文件是最常用到的功能之一,使用fs模塊讀取文件語法如下:
例:fs.readFile(文件,編碼,回調函數);
- var fs = require('fs');
- fs.readFile(文件名, function (err, data) {
- if (err) throw err;
- console.log(data);
- });
回調函數裏面的data,就是讀取的文件內容。
7.unlink函數的基本用法 (刪除文件)面對一堆垃圾的文件總是有想刪除的衝動,我有強迫症?你纔有呢。
好在有unlink函數,終於得救了,示例如下:
例:fs.unlink(文件,回調函數(err));
- var fs = require('fs');
- fs.unlink(文件, function(err) {
- if (err) throw err;
- console.log('successfully deleted');
- });
除了針對文件的操作,目錄的創建、刪除也經常遇到的,下面我們來看看node.js中如何創建目錄:
- fs.mkdir(路徑,權限,回調函數(err));
參數
- 路徑:新創建的目錄。
- 權限:可選參數,只在linux下有效,表示目錄的權限,默認爲0777,表示文件所有者、文件所有者所在的組的用戶、所有用戶,都有權限進行讀、寫、執行的操作。
- 回調函數:當發生錯誤時,錯誤信息會傳遞給回調函數的err參數。
刪除目錄也是必不可少的功能,rmdir函數可以刪除指定的目錄:
例:fs.rmdir(路徑,回調函數(err));
- var fs = require('fs');
- fs.rmdir(path, function(err) {
- if (err) throw err;
- console.log('ok');
- });
如果要讀取目錄下所有的文件應該怎麼辦呢?readdir函數可以讀取到指定目錄下所有的文件,示例如下:
- var fs = require('fs');
- fs.readdir(目錄,回調函數(err,files));
回調函數 (callback) 接受兩個參數 (err, files) 其中 files 是一個存儲目錄中所包含的文件名稱的數組,數組中不包括 '.' 和 '..'。