node.js和ncp模块 - 无法复制单个文件

时间:2016-07-28 12:55:21

标签: node.js

我正在使用Node.js v6.3.1ncp 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);

显然这仍然是不一致的,但至少是不那么冗长。

2 个答案:

答案 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);

显然这仍然是不一致的,但至少是不那么冗长。