首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将文件a移动到Node.js中的不同分区或设备?

如何将文件a移动到Node.js中的不同分区或设备?
EN

Stack Overflow用户
提问于 2010-12-31 15:06:34
回答 5查看 17.7K关注 0票数 32

我正在尝试使用Node.js脚本将文件从一个分区移动到另一个分区。当我使用fs.renameSync时,我收到了Error: EXDEV, Cross-device link。我会复制它并删除原始文件,但我也没有看到复制文件的命令。如何做到这一点?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-01-01 01:18:37

在不同分区之间移动文件时,您需要复制和取消链接。尝尝这个,

代码语言:javascript
复制
var fs = require('fs');
//var util = require('util');

var is = fs.createReadStream('source_file');
var os = fs.createWriteStream('destination_file');

is.pipe(os);
is.on('end',function() {
    fs.unlinkSync('source_file');
});

/* node.js 0.6 and earlier you can use util.pump:
util.pump(is, os, function() {
    fs.unlinkSync('source_file');
});
*/
票数 52
EN

Stack Overflow用户

发布于 2011-03-15 08:01:17

我知道这个问题已经得到了回答,但我遇到了类似的问题,最终得到了类似的结果:

代码语言:javascript
复制
require('child_process').spawn('cp', ['-r', source, destination])

这样做的目的是调用命令cp ("copy")。由于我们脱离了Node.js,因此您的系统需要支持此命令。

我知道它不是最优雅的,但它做到了我需要的:)

票数 7
EN

Stack Overflow用户

发布于 2013-05-27 06:40:24

问题的另一个解决方案。

在npm上有一个由"coolaj86“编写的名为fs.extra的包。

您可以这样使用它:npm install fs.extra

代码语言:javascript
复制
fs = require ('fs.extra');
fs.move ('foo.txt', 'bar.txt', function (err) {
    if (err) { throw err; }
    console.log ("Moved 'foo.txt' to 'bar.txt'");
});

我已经读过这东西的源代码了。它尝试执行标准fs.rename(),然后,如果失败,它会执行复制并使用@chandru使用的相同util.pump()删除原始文件。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4568689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档