Bạn muốn sử dụng các chức năng fs.readdir để có được nội dung thư mục và fs.rename chức năng để thực sự làm việc đổi tên. Cả hai chức năng này đều có các phiên bản đồng bộ nếu bạn cần để đợi cho chúng hoàn tất trước khi chạy mã sau đó.
Tôi đã viết kịch bản nhanh làm những gì bạn mô tả.
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);
}
});
});
});
});
Thử nghiệm trên máy cục bộ của tôi.
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'.
Nguồn
2015-09-10 21:33:03
Có lẽ bạn nên xem xét API hệ thống tệp node.js. Có * có thể * là một hàm để liệt kê các tệp trong một thư mục. Xin vui lòng, hiển thị một số nỗ lực trước khi yêu cầu ở đây. 'stat'ing một thư mục có ít liên quan đến vấn đề của bạn. –
Cảm ơn nhưng có tôi biết. Tôi nhìn vào API và gặp rắc rối đó là lý do tại sao tôi ở đây – Prolasis