我正在使用Node.js v6.3.1和ncp v2.0.0
我只能让ncp复制目录的内容,但不能复制该目录中的单个文件。
以下是以递归方式复制目录内容的代码:
var ncp = require("ncp").ncp;
ncp("source/directory/", "destination/directory/", callback);
...这里是相同的代码,但文件为源:
var ncp = require("ncp").ncp;
ncp("source/directory/file.txt", "destination/directory/", callback);
从这一点我可以想到的是,ncp是专门设计用于递归复制目录,而不是单个文件?
我曾考虑使用像read所述的文件系统write / here流函数,但实际上我希望坚持使用ncp。
更新
我找到了另一个名为node-fs-extra的软件包,它可以完成我想要的操作,而无需为操作添加事件处理程序,就像我必须使用fileSystem读/写解决方案一样。
以下是正在运行的代码:
var fsExtra = require("fs-extra");
fsExtra.copy("source/directory/file.txt", "destination/directory/file.txt", callback);
显然这仍然是不一致的,但至少是不那么冗长。
答案 0 :(得分:3)
好的,我已经弄清楚我做错了什么。
我试图将文件复制到目录中,因为我需要复制并在目录中命名文件。
所以这是我的原始代码不起作用:
var ncp = require("ncp");
ncp("source/directory/file.txt", "destination/directory/", callback);
...这里是固定代码工作,请注意在目标目录中包含文件名:
var ncp = require("ncp");
ncp("source/directory/file.txt", "destination/directory/file.txt", callback);
所以看起来ncp不会按原样获取文件,但需要您指定另一端的文件名才能成功复制。我想我假设它只是将具有相同名称的文件复制到目标目录中。
答案 1 :(得分:1)
我找到了另一个名为node-fs-extra的软件包,它可以完成我想要的操作,而无需为操作添加事件处理程序,就像我必须使用fileSystem读/写解决方案一样。
以下是正在运行的代码:
var fsExtra = require("fs-extra");
fsExtra.copy("source/directory/file.txt", "destination/directory/file.txt", callback);
显然这仍然是不一致的,但至少是不那么冗长。