node.js文件操作系统实例详解

2020-06-17 05:35:11易采站长站整理

});

输出如下:

/usr/local/bin/node mkdtemp.js
创建临时目录: /tmp/Cxw51O

找出软连接指向的真实路径

fs.readlink(path[, options], callback) fs.readlinkSync(path[, options])

如下面例子,创建了个软链接指向fileForReadLink.txt,通过fs.readlink()就可以找出原始的路径。


var fs = require('fs');
var randomFileName = './extra/fileForReadLink-' + String(Math.random()).slice(2, 6) + '.txt';
fs.symlinkSync('./extra/fileForReadLink.txt', randomFileName);
fs.readlink(randomFileName, 'utf8', function(err, linkString){
if(err) throw err;
console.log('链接文件内容: ' + linkString);
});

类似终端下直接运行readlink。对于软链接文件,效果同上面代码。对于硬链接,没有输出。

➜  extra git:(master) ✗ readlink fileForReadLink-9827.txt
./extra/fileForReadLink.txt
➜  extra git:(master) ✗ readlink fileForLinkHard.txt
➜  extra git:(master) ✗ readlink fileForLinkSoft.txt
./extra/fileForLink.txt

真实路径

fs.realpath(path[, options], callback) fs.realpathSync(path[, options])

例子:(不能作用于软链接?)


var fs = require('fs');
var path = require('path');
// fileForRealPath1.txt 是普通文件,正常运行
fs.realpath('./extra/inner/fileForRealPath1.txt', function(err, resolvedPath){
if(err) throw err;
console.log('fs.realpath: ' + resolvedPath);
});
// fileForRealPath.txt 是软链接, 会报错,提示找不到文件
fs.realpath('./extra/inner/fileForRealPath.txt', function(err, resolvedPath){
if(err) throw err;
console.log('fs.realpath: ' + resolvedPath);
});
console.log( 'path.resolve: ' + path.resolve('./extra/inner/fileForRealpath.txt') );

输出如下:

path.resolve: /Users/a/Documents/git-code/git-blog/demo/2015.05.21-node-basic/fs/extra/inner/fileForRealpath.txt
fs.realpath: /Users/a/Documents/git-code/git-blog/demo/2015.05.21-node-basic/fs/extra/inner/fileForRealPath1.txt
/Users/a/Documents/git-code/git-blog/demo/2015.05.21-node-basic/fs/realpath.js:12
    if(err) throw err;
            ^
Error: ENOENT: no such file or directory, realpath ‘./extra/inner/fileForRealPath.txt’
    at Error (native)
Process finished with exit code 1

删除目录

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

例子如下:


var fs = require('fs');
fs.rmdir('./dirForRemove', function(err){
if(err) throw err;