【发布时间】:2017-12-17 14:30:00
【问题描述】:
我的目标是使用 NodeJS 的文件系统复制一个 .asar 文件。我有一个文件路径,需要将 .asar 文件复制到另一个目的地。
文件路径示例:
C:/Users/redacted/Documents/ExampleElectronApp/example.asar
我需要将此文件(存档)复制到另一个目录。
之前我使用 walk and copy 函数复制了它,但它最终创建了一个名为 filename.asar 的目录,而不是一个名为 filename.asar 的实际文件 这个函数似乎适用于所有其他文件,并且正确的文件夹(.asar 档案除外)。
我的尝试
1:使用读写流复制存档。
var fs = require('fs');
fs.createReadStream('C:/Users/redacted/Documents/redacted/node_modules/electron-prebuilt/dist/resources/default_app.asar').pipe(fs.createWriteStream('C:/Users/redacted/Desktop/test.asar'));
它说找不到此文件,但我可以向您保证,复制源路径确实会将我引导至 .asar 文件。
2:使用 asar 要求创建包。
var fs = require('fs');
var asar = require('asar');
asar.createPackage('C:/Users/redacted/Documents/redacted/node_modules/electron-prebuilt/dist/resources/default_app.asar', 'C:/Users/redacted/Desktop/test.asar', function() {
console.log('done.');
})
虽然此函数确实记录了正确的“完成”消息,但似乎复制不成功。目标目录中没有显示新文件或文件夹。
提前谢谢大家。
【问题讨论】:
-
windows 目录路径分隔符不是
\吗?尝试将所有/替换为\\。或者使用fs.existsSync(yourPath)来确保Node 可以实际看到它。您甚至可以使用fs.readdir列出文件夹中的文件。 -
您的文件路径中没有空格,是吗?
-
我在路径字符串中的所有空格之前都使用了反斜杠 \。我还尝试将所有 / 替换为 \\ (除了空格),这两种解决方案最终都给出了相同的错误。当我将源路径用作“路径”时,使用
fs.existsSync("path")返回true。复制整个档案还有其他建议吗?