node 的文件操作 有复制吗 还有unlink操作不能对文件夹执行?
发布于 10 年前 作者 dulante 10356 次浏览 最后一次编辑是 8 年前

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跑命令来移动,新版本的不知道是不是已经可以了

回到顶部