nodejs-文件系统
生活随笔
收集整理的這篇文章主要介紹了
nodejs-文件系统
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Node.js 文件系統(tǒng)Node 導入文件系統(tǒng)模塊(fs)語法如下所示:var fs = require("fs")異步和同步Node.js 文件系統(tǒng)(fs 模塊)模塊中的方法均有異步和同步版本,例如讀取文件內(nèi)容的函數(shù)有異步的 fs.readFile() 和同步的 fs.readFileSync()。異步的方法函數(shù)最后一個參數(shù)為回調(diào)函數(shù),回調(diào)函數(shù)的第一個參數(shù)包含了錯誤信息(error)。創(chuàng)建 file.js 文件, 代碼如下:var fs = require("fs");// 異步讀取
fs.readFile('input.txt', function (err, data) {if (err) {return console.error(err);}console.log("異步讀取: " + data.toString());
});// 同步讀取
var data = fs.readFileSync('input.txt');
console.log("同步讀取: " + data.toString());打開文件
語法
以下為在異步模式下打開文件的語法格式:fs.open(path, flags[, mode], callback)path - 文件的路徑。flags - 文件打開的行為。具體值詳見下文。mode - 設置文件模式(權限),文件創(chuàng)建默認權限為 0666(可讀,可寫)。callback - 回調(diào)函數(shù),帶有兩個參數(shù)如:callback(err, fd)。flags 參數(shù)可以是以下值:Flag 描述
r 以讀取模式打開文件。如果文件不存在拋出異常。
r+ 以讀寫模式打開文件。如果文件不存在拋出異常。
rs 以同步的方式讀取文件。
rs+ 以同步的方式讀取和寫入文件。
w 以寫入模式打開文件,如果文件不存在則創(chuàng)建。
wx 類似 'w',但是如果文件路徑存在,則文件寫入失敗。
w+ 以讀寫模式打開文件,如果文件不存在則創(chuàng)建。
wx+ 類似 'w+', 但是如果文件路徑存在,則文件讀寫失敗。
a 以追加模式打開文件,如果文件不存在則創(chuàng)建。
ax 類似 'a', 但是如果文件路徑存在,則文件追加失敗。
a+ 以讀取追加模式打開文件,如果文件不存在則創(chuàng)建。
ax+ 類似 'a+', 但是如果文件路徑存在,則文件讀取追加失敗。實例 創(chuàng)建 file.js 文件,并打開 input.txt 文件進行讀寫,代碼如下所示:var fs = require("fs");// 異步打開文件
console.log("準備打開文件!");
fs.open('input.txt', 'r+', function(err, fd) {if (err) {return console.error(err);}console.log("文件打開成功!");
});以下為通過異步模式獲取文件信息的語法格式:
fs.stat(path, callback)
參數(shù)
參數(shù)使用說明如下:
path - 文件路徑。
callback - 回調(diào)函數(shù),帶有兩個參數(shù)如:(err, stats), stats 是 fs.Stats 對象。
fs.stat(path)執(zhí)行后,會將stats類的實例返回給其回調(diào)函數(shù)。可以通過stats類中的提供方法判斷文件的相關屬性。例如判斷是否為文件:var fs = require('fs');
fs.stat('/Users/liuht/code/itbilu/demo/fs.js', function (err, stats) {console.log(stats.isFile()); //true
})
stats類中的方法有:方法 描述
stats.isFile() 如果是文件返回 true,否則返回 false。
stats.isDirectory() 如果是目錄返回 true,否則返回 false。
stats.isBlockDevice() 如果是塊設備返回 true,否則返回 false。
stats.isCharacterDevice() 如果是字符設備返回 true,否則返回 false。
stats.isSymbolicLink() 如果是軟鏈接返回 true,否則返回 false。
stats.isFIFO() 如果是FIFO,返回true,否則返回 false。FIFO是UNIX中的一種特殊類型的命令管道。
stats.isSocket() 如果是 Socket 返回 true,否則返回 false。fs.writeFile(file, data[, options], callback)
writeFile 直接打開文件默認是 w 模式,所以如果文件存在,該方法寫入的內(nèi)容會覆蓋舊的文件內(nèi)容。參數(shù)
參數(shù)使用說明如下:file - 文件名或文件描述符。data - 要寫入文件的數(shù)據(jù),可以是 String(字符串) 或 Buffer(緩沖) 對象。options - 該參數(shù)是一個對象,包含 {encoding, mode, flag}。默認編碼為 utf8, 模式為 0666 , flag 為 'w'callback - 回調(diào)函數(shù),回調(diào)函數(shù)只包含錯誤信息參數(shù)(err),在寫入失敗時返回。實例
接下來我們創(chuàng)建 file.js 文件,代碼如下所示:var fs = require("fs");console.log("準備寫入文件");
fs.writeFile('input.txt', '我是通 過fs.writeFile 寫入文件的內(nèi)容', function(err) {if (err) {return console.error(err);}console.log("數(shù)據(jù)寫入成功!");console.log("--------我是分割線-------------")console.log("讀取寫入的數(shù)據(jù)!");fs.readFile('input.txt', function (err, data) {if (err) {return console.error(err);}console.log("異步讀取文件數(shù)據(jù): " + data.toString());});
});讀取文件
語法 以下為異步模式下讀取文件的語法格式:fs.read(fd, buffer, offset, length, position, callback)
該方法使用了文件描述符來讀取文件。參數(shù)
參數(shù)使用說明如下:fd - 通過 fs.open() 方法返回的文件描述符。buffer - 數(shù)據(jù)寫入的緩沖區(qū)。offset - 緩沖區(qū)寫入的寫入偏移量。length - 要從文件中讀取的字節(jié)數(shù)。position - 文件讀取的起始位置,如果 position 的值為 null,則會從當前文件指針的位置讀取。callback - 回調(diào)函數(shù),有三個參數(shù)err, bytesRead, buffer,err 為錯誤信息, bytesRead 表示讀取的字節(jié)數(shù),buffer 為緩沖區(qū)對象。實例var fs = require("fs");
var buf = new Buffer.alloc(1024);console.log("準備打開已存在的文件!");
fs.open('input.txt', 'r+', function(err, fd) {if (err) {return console.error(err);}console.log("文件打開成功!");console.log("準備讀取文件:");fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){if (err){console.log(err);}console.log(bytes + " 字節(jié)被讀取");// 僅輸出讀取的字節(jié)if(bytes > 0){console.log(buf.slice(0, bytes).toString());}});
});fs.close(fd, callback)
該方法使用了文件描述符來讀取文件。參數(shù) 參數(shù)使用說明如下:fd - 通過 fs.open() 方法返回的文件描述符。callback - 回調(diào)函數(shù),沒有參數(shù)。var fs = require("fs");
var buf = new Buffer.alloc(1024);console.log("準備打開文件!");
fs.open('input.txt', 'r+', function(err, fd) {if (err) {return console.error(err);}console.log("文件打開成功!");console.log("準備讀取文件!");fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){if (err){console.log(err);}// 僅輸出讀取的字節(jié)if(bytes > 0){console.log(buf.slice(0, bytes).toString());}// 關閉文件fs.close(fd, function(err){if (err){console.log(err);} console.log("文件關閉成功");});});
});截取文件
語法
以下為異步模式下截取文件的語法格式:fs.ftruncate(fd, len, callback)
該方法使用了文件描述符來讀取文件。參數(shù)
參數(shù)使用說明如下:fd - 通過 fs.open() 方法返回的文件描述符。len - 文件內(nèi)容截取的長度。callback - 回調(diào)函數(shù),沒有參數(shù)。實例var fs = require("fs");
var buf = new Buffer.alloc(1024);console.log("準備打開文件!");
fs.open('input.txt', 'r+', function(err, fd) {if (err) {return console.error(err);}console.log("文件打開成功!");console.log("截取10字節(jié)內(nèi)的文件內(nèi)容,超出部分將被去除。");// 截取文件fs.ftruncate(fd, 10, function(err){if (err){console.log(err);} console.log("文件截取成功。");console.log("讀取相同的文件"); fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){if (err){console.log(err);}// 僅輸出讀取的字節(jié)if(bytes > 0){console.log(buf.slice(0, bytes).toString());}// 關閉文件fs.close(fd, function(err){if (err){console.log(err);} console.log("文件關閉成功!");});});});
});刪除文件
語法
以下為刪除文件的語法格式:
fs.unlink(path, callback)
參數(shù)
參數(shù)使用說明如下:
path - 文件路徑。
callback - 回調(diào)函數(shù),沒有參數(shù)。實例var fs = require("fs");console.log("準備刪除文件!");
fs.unlink('input.txt', function(err) {if (err) {return console.error(err);}console.log("文件刪除成功!");
});創(chuàng)建目錄
語法
以下為創(chuàng)建目錄的語法格式:fs.mkdir(path[, options], callback)
參數(shù)
參數(shù)使用說明如下:path - 文件路徑。options 參數(shù)可以是:recursive - 是否以遞歸的方式創(chuàng)建目錄,默認為 false。
mode - 設置目錄權限,默認為 0777。
callback - 回調(diào)函數(shù),沒有參數(shù)。實例
接下來我們創(chuàng)建 file.js 文件,代碼如下所示:var fs = require("fs");
// tmp 目錄必須存在
console.log("創(chuàng)建目錄 /tmp/test/");
fs.mkdir("/tmp/test/",function(err){if (err) {return console.error(err);}console.log("目錄創(chuàng)建成功。");
});可以添加 recursive: true 參數(shù),不管創(chuàng)建的目錄 /tmp 和 /tmp/a 是否存在:fs.mkdir('/tmp/a/apple', { recursive: true }, (err) => {if (err) throw err;
});
讀取目錄
語法
以下為讀取目錄的語法格式:fs.readdir(path, callback)
參數(shù)
參數(shù)使用說明如下:path - 文件路徑。callback - 回調(diào)函數(shù),回調(diào)函數(shù)帶有兩個參數(shù)err, files,err 為錯誤信息,files 為 目錄下的文件數(shù)組列表。實例
接下來我們創(chuàng)建 file.js 文件,代碼如下所示:var fs = require("fs");console.log("查看 /tmp 目錄");
fs.readdir("/tmp/",function(err, files){if (err) {return console.error(err);}files.forEach( function (file){console.log( file );});
});刪除目錄
語法
以下為刪除目錄的語法格式:fs.rmdir(path, callback)
參數(shù)
參數(shù)使用說明如下:path - 文件路徑。callback - 回調(diào)函數(shù),沒有參數(shù)。實例var fs = require("fs");
// 執(zhí)行前創(chuàng)建一個空的 /tmp/test 目錄
console.log("準備刪除目錄 /tmp/test");
fs.rmdir("/tmp/test",function(err){if (err) {return console.error(err);}console.log("讀取 /tmp 目錄");fs.readdir("/tmp/",function(err, files){if (err) {return console.error(err);}files.forEach( function (file){console.log( file );});});
});文件模塊方法參考手冊
以下為 Node.js 文件模塊相同的方法列表:序號 方法 & 描述
1 fs.rename(oldPath, newPath, callback)
異步 rename().回調(diào)函數(shù)沒有參數(shù),但可能拋出異常。
2 fs.ftruncate(fd, len, callback)
異步 ftruncate().回調(diào)函數(shù)沒有參數(shù),但可能拋出異常。
3 fs.ftruncateSync(fd, len)
同步 ftruncate()
4 fs.truncate(path, len, callback)
異步 truncate().回調(diào)函數(shù)沒有參數(shù),但可能拋出異常。
5 fs.truncateSync(path, len)
同步 truncate()
6 fs.chown(path, uid, gid, callback)
異步 chown().回調(diào)函數(shù)沒有參數(shù),但可能拋出異常。
7 fs.chownSync(path, uid, gid)
同步 chown()
8 fs.fchown(fd, uid, gid, callback)
異步 fchown().回調(diào)函數(shù)沒有參數(shù),但可能拋出異常。
9 fs.fchownSync(fd, uid, gid)
同步 fchown()
10 fs.lchown(path, uid, gid, callback)
異步 lchown().回調(diào)函數(shù)沒有參數(shù),但可能拋出異常。
11 fs.lchownSync(path, uid, gid)
同步 lchown()
12 fs.chmod(path, mode, callback)
異步 chmod().回調(diào)函數(shù)沒有參數(shù),但可能拋出異常。
13 fs.chmodSync(path, mode)
同步 chmod().
14 fs.fchmod(fd, mode, callback)
異步 fchmod().回調(diào)函數(shù)沒有參數(shù),但可能拋出異常。
15 fs.fchmodSync(fd, mode)
同步 fchmod().
16 fs.lchmod(path, mode, callback)
異步 lchmod().回調(diào)函數(shù)沒有參數(shù),但可能拋出異常。Only available on Mac OS X.
17 fs.lchmodSync(path, mode)
同步 lchmod().
18 fs.stat(path, callback)
異步 stat(). 回調(diào)函數(shù)有兩個參數(shù) err, stats,stats 是 fs.Stats 對象。
19 fs.lstat(path, callback)
異步 lstat(). 回調(diào)函數(shù)有兩個參數(shù) err, stats,stats 是 fs.Stats 對象。
20 fs.fstat(fd, callback)
異步 fstat(). 回調(diào)函數(shù)有兩個參數(shù) err, stats,stats 是 fs.Stats 對象。
21 fs.statSync(path)
同步 stat(). 返回 fs.Stats 的實例。
22 fs.lstatSync(path)
同步 lstat(). 返回 fs.Stats 的實例。
23 fs.fstatSync(fd)
同步 fstat(). 返回 fs.Stats 的實例。
24 fs.link(srcpath, dstpath, callback)
異步 link().回調(diào)函數(shù)沒有參數(shù),但可能拋出異常。
25 fs.linkSync(srcpath, dstpath)
同步 link().
26 fs.symlink(srcpath, dstpath[, type], callback)
異步 symlink().回調(diào)函數(shù)沒有參數(shù),但可能拋出異常。 type 參數(shù)可以設置為 'dir', 'file', 或 'junction' (默認為 'file') 。
27 fs.symlinkSync(srcpath, dstpath[, type])
同步 symlink().
28 fs.readlink(path, callback)
異步 readlink(). 回調(diào)函數(shù)有兩個參數(shù) err, linkString。
29 fs.realpath(path[, cache], callback)
異步 realpath(). 回調(diào)函數(shù)有兩個參數(shù) err, resolvedPath。
30 fs.realpathSync(path[, cache])
同步 realpath()。返回絕對路徑。
31 fs.unlink(path, callback)
異步 unlink().回調(diào)函數(shù)沒有參數(shù),但可能拋出異常。
32 fs.unlinkSync(path)
同步 unlink().
33 fs.rmdir(path, callback)
異步 rmdir().回調(diào)函數(shù)沒有參數(shù),但可能拋出異常。
34 fs.rmdirSync(path)
同步 rmdir().
35 fs.mkdir(path[, mode], callback)
S異步 mkdir(2).回調(diào)函數(shù)沒有參數(shù),但可能拋出異常。 訪問權限默認為 0777。
36 fs.mkdirSync(path[, mode])
同步 mkdir().
37 fs.readdir(path, callback)
異步 readdir(3). 讀取目錄的內(nèi)容。
38 fs.readdirSync(path)
同步 readdir().返回文件數(shù)組列表。
39 fs.close(fd, callback)
異步 close().回調(diào)函數(shù)沒有參數(shù),但可能拋出異常。
40 fs.closeSync(fd)
同步 close().
41 fs.open(path, flags[, mode], callback)
異步打開文件。
42 fs.openSync(path, flags[, mode])
同步 version of fs.open().
43 fs.utimes(path, atime, mtime, callback)44 fs.utimesSync(path, atime, mtime)
修改文件時間戳,文件通過指定的文件路徑。
45 fs.futimes(fd, atime, mtime, callback)46 fs.futimesSync(fd, atime, mtime)
修改文件時間戳,通過文件描述符指定。
47 fs.fsync(fd, callback)
異步 fsync.回調(diào)函數(shù)沒有參數(shù),但可能拋出異常。
48 fs.fsyncSync(fd)
同步 fsync.
49 fs.write(fd, buffer, offset, length[, position], callback)
將緩沖區(qū)內(nèi)容寫入到通過文件描述符指定的文件。
50 fs.write(fd, data[, position[, encoding]], callback)
通過文件描述符 fd 寫入文件內(nèi)容。
51 fs.writeSync(fd, buffer, offset, length[, position])
同步版的 fs.write()。
52 fs.writeSync(fd, data[, position[, encoding]])
同步版的 fs.write().
53 fs.read(fd, buffer, offset, length, position, callback)
通過文件描述符 fd 讀取文件內(nèi)容。
54 fs.readSync(fd, buffer, offset, length, position)
同步版的 fs.read.
55 fs.readFile(filename[, options], callback)
異步讀取文件內(nèi)容。
56 fs.readFileSync(filename[, options])
57 fs.writeFile(filename, data[, options], callback)
異步寫入文件內(nèi)容。
58 fs.writeFileSync(filename, data[, options])
同步版的 fs.writeFile。
59 fs.appendFile(filename, data[, options], callback)
異步追加文件內(nèi)容。
60 fs.appendFileSync(filename, data[, options])
The 同步 version of fs.appendFile.
61 fs.watchFile(filename[, options], listener)
查看文件的修改。
62 fs.unwatchFile(filename[, listener])
停止查看 filename 的修改。
63 fs.watch(filename[, options][, listener])
查看 filename 的修改,filename 可以是文件或目錄。返回 fs.FSWatcher 對象。
64 fs.exists(path, callback)
檢測給定的路徑是否存在。
65 fs.existsSync(path)
同步版的 fs.exists.
66 fs.access(path[, mode], callback)
測試指定路徑用戶權限。
67 fs.accessSync(path[, mode])
同步版的 fs.access。
68 fs.createReadStream(path[, options])
返回ReadStream 對象。
69 fs.createWriteStream(path[, options])
返回 WriteStream 對象。
70 fs.symlink(srcpath, dstpath[, type], callback)
異步 symlink().回調(diào)函數(shù)沒有參數(shù),但可能拋出異常。
?
總結
以上是生活随笔為你收集整理的nodejs-文件系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nodejs-模块系统
- 下一篇: Docker Machine-Windo