循环浏览文件夹中的文件Node.JS

我正在尝试循环访问目录中的文件,但是我在实现它时遇到了一些麻烦。 如何拉入多个文件,然后将其移动到另一个文件夹?

var dirname = 'C:/FolderwithFiles'; console.log("Going to get file info!"); fs.stat(dirname, function (err, stats) { if (err) { return console.error(err); } console.log(stats); console.log("Got file info successfully!"); // Check file type console.log("isFile ? " + stats.isFile()); console.log("isDirectory ? " + stats.isDirectory()); }); 

你想使用fs.readdir函数来获取目录内容和fs.rename函数来实际进行重命名。 这两个函数都具有同步版本,如果您需要等待它们完成后再运行代码。

我写了一个快速的脚本,做你所描述的。

 var fs = require( 'fs' ); var path = require( 'path' ); // In newer Node.js versions where process is already global this isn't necessary. var process = require( "process" ); var moveFrom = "/home/mike/dev/node/sonar/moveme"; var moveTo = "/home/mike/dev/node/sonar/tome" // Loop through all the files in the temp directory fs.readdir( moveFrom, function( err, files ) { if( err ) { console.error( "Could not list the directory.", err ); process.exit( 1 ); } files.forEach( function( file, index ) { // Make one pass and make the file complete var fromPath = path.join( moveFrom, file ); var toPath = path.join( moveTo, file ); fs.stat( fromPath, function( error, stat ) { if( error ) { console.error( "Error stating file.", error ); return; } if( stat.isFile() ) console.log( "'%s' is a file.", fromPath ); else if( stat.isDirectory() ) console.log( "'%s' is a directory.", fromPath ); fs.rename( fromPath, toPath, function( error ) { if( error ) { console.error( "File moving error.", error ); } else { console.log( "Moved file '%s' to '%s'.", fromPath, toPath ); } } ); } ); } ); } ); 

在我的本地机器上testing过。

 node testme.js '/home/mike/dev/node/sonar/moveme/hello' is a file. '/home/mike/dev/node/sonar/moveme/test' is a directory. '/home/mike/dev/node/sonar/moveme/test2' is a directory. '/home/mike/dev/node/sonar/moveme/test23' is a directory. '/home/mike/dev/node/sonar/moveme/test234' is a directory. Moved file '/home/mike/dev/node/sonar/moveme/hello' to '/home/mike/dev/node/sonar/tome/hello'. Moved file '/home/mike/dev/node/sonar/moveme/test' to '/home/mike/dev/node/sonar/tome/test'. Moved file '/home/mike/dev/node/sonar/moveme/test2' to '/home/mike/dev/node/sonar/tome/test2'. Moved file '/home/mike/dev/node/sonar/moveme/test23' to '/home/mike/dev/node/sonar/tome/test23'. Moved file '/home/mike/dev/node/sonar/moveme/test234' to '/home/mike/dev/node/sonar/tome/test234'.