node 的文件操作 有复制吗 还有unlink操作不能对文件夹执行?
node fs模块有没有提供复制的方法?rename是重命名,移动文件 还有unlink为什么对文件夹无效啊
8 回复
unlink只删除文件的,像这种操作本地资源的api,例如操作文件很多的api名都是从unix或者linux上继承过来的。 ps: rmdir 可以删除目录,返回值是undefined 没有copy方法,一般的应用rename够了
fs.unlink(‘test/123’,function(err){}); fs.unlink('test/123.txt’function(err){}); 前面的123是文件夹删不掉,123.txt能删掉不是路径出错 为什么能删除文件夹啊 还有复制一个文件夹要如何实现
thanks fs.rename(oldPath,newPath,function(err){}); 可是我需要对每一个处理都给一份oldPath的文件,可是rename的话原来的文件就没了,这个要怎么实现 删除目录的话 可是文件依然存在。。
复制文件:
var mFs = require('fs');
var readStream = mFs.createReadStream('./1.txt');
var writeStream = mFs.createWriteStream('./1-copy.txt');
readStream.pipe(writeStream);
readStream.on('end', function () {
console.log('copy end');
});
readStream.on('error', function () {
console.log('copy error');
});
删除文件夹: 因为无法删除含有文件的文件夹,则需要递归该文件夹,从里删到最外层。以下是同步方法,也可以改写成异步。
var mFs = require('fs');
var mPath = require('path');
var rmdir = function (dirPath) {
var files = mFs.readdirSync(dirPath);
if (files.length > 0)
for (var i = 0; i < files.length; i++) {
var filePath = mPath.join(dirPath, files[i]);
if (mFs.statSync(filePath).isFile()) {
mFs.unlinkSync(filePath);
} else {
rmdir(filePath);
}
}
mFs.rmdirSync(dirPath);
};
try {
rmdir('./1');
console.log('delete ok');
} catch (e) {
console.log(e.message);
}
有一点需要注意,NODE无法在两个硬盘(好像是分区,我忘记了)间移动文件,只能自己用NODE跑命令来移动,新版本的不知道是不是已经可以了