Nodejs文件操作,可以在不同盘符之间复制文件吗?
Nodejs文件操作,可以在不同盘符之间复制文件吗?
比如,我想把C盘下的文件复制到E盘,怎么操作??
当然可以!在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('文件复制完成');
});
代码解释
-
引入模块:
fs
:用于处理文件系统操作。path
:用于处理和转换文件路径。
-
定义路径:
sourceFilePath
:源文件路径,这里是C盘下的file.txt
。destinationFilePath
:目标文件路径,这里是E盘下的file.txt
。
-
创建流:
- 使用
fs.createReadStream
创建一个从源文件读取数据的可读流。 - 使用
fs.createWriteStream
创建一个向目标文件写入数据的可写流。
- 使用
-
管道传输:
- 使用
pipe
方法将读取的数据直接传输到写入流中,从而实现文件的复制。
- 使用
-
监听事件:
- 监听
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('文件复制完成!');
});
解释:
- 引入模块:首先引入
fs
和path
模块。 - 定义路径:定义源文件路径(C盘)和目标文件路径(E盘)。
- 创建流:使用
fs.createReadStream()
创建一个读取流,用于从源文件中读取数据;使用fs.createWriteStream()
创建一个写入流,用于将数据写入目标文件。 - 管道操作:通过调用
.pipe()
方法将读取流连接到写入流,这样数据会自动从读取流流向写入流。 - 错误处理:添加事件监听器来捕获可能发生的错误,并进行相应的处理。
- 完成通知:当数据完全复制后,
writeStream
会触发finish
事件,表明复制完成。
此代码示例展示了如何在Node.js中实现跨盘符文件复制的基本流程。你可以根据实际需求调整路径和文件名。