javascript - nodejs - Looping a través de archivos en una carpeta Node.JS
node.js push array (1)
Estoy tratando de recorrer y recoger archivos en un directorio, pero tengo algunos problemas para implementarlo. ¿Cómo extraer múltiples archivos y luego moverlos a otra carpeta?
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());
});
Desea utilizar la función fs.readdir para obtener el contenido del directorio y la función fs.rename para hacer el cambio de nombre. Ambas funciones tienen versiones síncronas si necesita esperar a que terminen antes de ejecutar el código posteriormente.
Escribí un guión rápido que hace lo que describes.
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 );
}
} );
} );
} );
} );
Probado en mi máquina local.
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''.