fs.rename() fs.renameSync
fd = fs.openSync(file, flags) fs.closeSync(fd) // fs.open(file, flags, function (fd) { fs.close(fd, function(err) { }) })
當打開或新建文件時,內核向進程返回一個文件描述符
fd`flags
表示打開模式: 'r'以讀取模式打開,'w' 以讀取模式打開,不存在則建立,'a' 以追加模式打開,不存在則建立var fd = fs.openSync(file, frag) fs.ftruncateSync(fd, len) fs.closeSync(fd); // var fd = fs.openSync(file, frag) fs.ftruncate(fd, len, function (err) { fs.closeSync(fd); })
fs.truncateSync(file, len) // fs.truncate(file, len, function (err) { })
fs.ftruncate
相似,但能夠直接經過路徑修改文件stat\statSync
var fs = require('fs') fs.stat(path, function (err, stats) { console.log('是否爲文件:', stats.isFile()); console.log('是否爲目錄:', stats.isDirectory()); console.log('讀寫權限是:', stats.mode); console.log('文件大小是:', stats.size); console.log('訪問時間是:', stats.atime); console.log('修改時間是:', stats.mtime); console.log('建立時間是:', stats.ctime); console.log('全部權用戶ID :', stats.uid); console.log('全部權羣組ID:', stats.gid); })
fstat\fstatSync
fs.chown(path, uid, gid, callback)/chownSync
fs.fchown(fd, uid, gid, callback)/fchowmSync
fs.chmod(path, mod, callback)/chmodSync
fs.fchmods(fd, mod, callback)/fchmodSync
chmod mod path
; 查看相應文件權限: ls -lh path
Linux/Unix 的檔案存取權限分爲三級 : 檔案擁有者、羣組、其餘 r 表示可讀取,w 表示可寫入,x 表示可執行 r=4,w=2,x=1 若要rwx屬性則4+2+1=7; 若要rw-屬性則4+2=6; 若要r-x屬性則4+1=7 chmod ug=rwx,o=x path等同chmod 771 path 600 (只有全部者有讀和寫的權限) 644 (全部者有讀和寫的權限,組用戶只有讀的權限) 700 (只有全部者有讀和寫以及執行的權限) 666 (每一個人都有讀和寫的權限) 777(每一個人都有讀和寫以及執行的權限)
fs.link(srcpath, dstpath, callback)/ fs.linkSync fs.unlink(scrpath, dstpath, callback)/fs.unlinkSync
//建立 fs.symlink(srcpath, dstpath, callback)/ fs.symlinkSync //讀取,不是有效文件符號連接會出錯 fs.readlink(dstpath, callback)/ fs.readlinkSync
fs.realpath(path, [opetion], callback)/realpathSync
mkdir/mkdirSync
rmdir/rmdirSync
讀取: readdir/readdirSync
返回文件目錄數組數組
fs.exists(path, function (result) {})/fs.existsSync
讀取文件內容app
//readFile/readFileSync fs.readFile(path, callback)/fs.readFileSync //read/readSync fs.open('1.txt', 'r', function (err, fd) { fs.fstat(fd, function (err, stat) { var buf = new Buffer(stat.size), bytesRead = 0; var length = fs.read(fd, buf, bytesRead, buf.length, null, function (err, bytesRead, buffer) { console.log(err, bytesRead, buffer.toString()); fs.close(fd); }); }) })
//writeFile/writeFileSync fs.writeFileSync(path, data); //write/writeSync fs.open('1.txt', 'w', function (err, fd) { var buf = new Buffer('aaa'); fs.write(fd, buf, 0, buf.length, null, function (err, bytesRead, buffer) { console.log(bytesRead, buffer.toString()); fs.close(fd); }) })
追加寫文件: fs.appendFile/fs.appendFileSync
異步
監控文件: 注意這兩個方法針對不一樣的系統平臺使用起來不是很穩定ui
fs.watchFile('1.txt', function (curr, prev) { console.log(curr, prev); }) fs.watch('1.txt', function (event, filename) { console.log(event); console.log(filename); })
path.normalize
過濾多餘/
,處理./
,../
path.join
包括規範字符串路徑處理path.resolve
: 包括規範和合並字符串路徑path.relative
: 包括規範和合並字符串路徑//根據已經獲得的文件名稱,得到該文件所在文件夾絕對路徑 path.dirname(path.resolve('1.txt'))
path.extname
格式.xxx
path.basename('a/b/test.txt'); //c path.basename('a/b/test.txt', 't.txt'); //tex
url.parse url.format
url
路徑上增長或替換標籤url
是href
類型,則會插入或替換以最後一個/
爲基礎url
以/
開頭,則插入或替換標籤以/
開頭會徹底替換console.log(url.resolve('/a/b', 'c')); // /a/c console.log(url.resolve('/a/b', '/c')); // /c console.log(url.resolve('/a/b/', 'c')); // /a/b/c console.log(url.resolve('/a/b/', '/c')); // /c console.log(url.resolve('http://xxx.com/a', 'c')); // http://xxx.com/c console.log(url.resolve('http://xxx.com/a', '/c')); // http://xxx.com/c console.log(url.resolve('http://xxx.com/a/', 'c')); // http://xxx.com/a/c console.log(url.resolve('http://xxx.com/a/', '/c')); // http://xxx.com/c
var querystring = require('querystring') querystring.parse(url)