Nodejs文件操作,可以在不同盘符之间复制文件吗?

Nodejs文件操作,可以在不同盘符之间复制文件吗?

比如,我想把C盘下的文件复制到E盘,怎么操作??

5 回复

当然可以!在Node.js中,你可以使用内置的fs(文件系统)模块和path(路径)模块来实现文件在不同盘符之间的复制。以下是一个简单的示例代码,演示如何将C盘下的一个文件复制到E盘。

示例代码

const fs = require('fs');
const path = require('path');

// 源文件路径(C盘)
const sourceFilePath = 'C:\\source\\file.txt';

// 目标文件路径(E盘)
const destinationFilePath = 'E:\\destination\\file.txt';

// 创建可读流
const readStream = fs.createReadStream(sourceFilePath);

// 创建可写流
const writeStream = fs.createWriteStream(destinationFilePath);

// 将源文件数据写入目标文件
readStream.pipe(writeStream);

// 监听错误事件
readStream.on('error', (err) => {
    console.error(`读取源文件时发生错误: ${err.message}`);
});

writeStream.on('error', (err) => {
    console.error(`写入目标文件时发生错误: ${err.message}`);
});

writeStream.on('finish', () => {
    console.log('文件复制完成');
});

代码解释

  1. 引入模块

    • fs:用于处理文件系统操作。
    • path:用于处理和转换文件路径。
  2. 定义路径

    • sourceFilePath:源文件路径,这里是C盘下的file.txt
    • destinationFilePath:目标文件路径,这里是E盘下的file.txt
  3. 创建流

    • 使用fs.createReadStream创建一个从源文件读取数据的可读流。
    • 使用fs.createWriteStream创建一个向目标文件写入数据的可写流。
  4. 管道传输

    • 使用pipe方法将读取的数据直接传输到写入流中,从而实现文件的复制。
  5. 监听事件

    • 监听error事件以捕获并处理可能出现的错误。
    • 监听finish事件以确认文件复制完成。

通过上述代码,你就可以实现文件在不同盘符之间的复制。希望这对您有帮助!


把C盘文件读出来~写到E盘下~

var fs = require(‘fs’); var util = require(“util”);

var base = base || {};

base.createFloder = function(path, callback) { var arr = path.split(’/’); var floderPath = ‘’; var index = 0; (function() { var callFunc = arguments.callee; var self = this; floderPath = floderPath + arr[index] + ‘/’; fs.readdir(floderPath, function(err, files) { if(err) { fs.mkdir(floderPath, 0777, function(err) { console.log("[create floder] create floder " + floderPath); if (++index < arr.length) { callFunc.call(self); } else { callback? callback() : ‘’; } }); } else { if (++index < arr.length) { callFunc.call(self); } else { callback? callback() : ‘’; } } }); })(); };

base.copyFile = function(fileInPath, fileOutPath, callback) { var fileOutFolderPath = fileOutPath.substr(0, fileOutPath.lastIndexOf(’/’)); base.createFloder(fileOutFolderPath, function() { console.log("[copy] copy " + fileInPath + " to " + fileOutPath); var is = fs.createReadStream(fileInPath); var os = fs.createWriteStream(fileOutPath); readableStream.pipe(is, os, function(err){
if(err) { console.log("[copy] copy err: " + err); return ; } callback? callback() : ‘’; }); }); };

base.copyFile(“c:/test.txt”, “d:/test.txt”, function() { console.log(“copy success”); });

记得当年NODE在linux下无法在两个分区下移动文件,所以一直使用require(‘child_process’).exec(‘mv xxxxx xxx’)来移动文件。不知道现在的版本有没解决。

可以使用Node.js的fs模块和path模块来实现跨盘符文件复制的功能。以下是一个简单的示例代码,演示如何将C盘下的文件复制到E盘。

const fs = require('fs');
const path = require('path');

// 源文件路径(C盘)
const sourceFilePath = 'C:\\source\\file.txt';

// 目标文件路径(E盘)
const targetFilePath = 'E:\\destination\\file.txt';

// 创建可读流
const readStream = fs.createReadStream(sourceFilePath);

// 创建可写流
const writeStream = fs.createWriteStream(targetFilePath);

// 使用管道来传输数据
readStream.pipe(writeStream);

// 监听错误事件
readStream.on('error', (err) => {
    console.error(`读取文件时发生错误: ${err.message}`);
});

writeStream.on('error', (err) => {
    console.error(`写入文件时发生错误: ${err.message}`);
});

writeStream.on('finish', () => {
    console.log('文件复制完成!');
});

解释:

  1. 引入模块:首先引入fspath模块。
  2. 定义路径:定义源文件路径(C盘)和目标文件路径(E盘)。
  3. 创建流:使用fs.createReadStream()创建一个读取流,用于从源文件中读取数据;使用fs.createWriteStream()创建一个写入流,用于将数据写入目标文件。
  4. 管道操作:通过调用.pipe()方法将读取流连接到写入流,这样数据会自动从读取流流向写入流。
  5. 错误处理:添加事件监听器来捕获可能发生的错误,并进行相应的处理。
  6. 完成通知:当数据完全复制后,writeStream会触发finish事件,表明复制完成。

此代码示例展示了如何在Node.js中实现跨盘符文件复制的基本流程。你可以根据实际需求调整路径和文件名。

回到顶部