Tôi đang cố chuyển một tệp từ phân vùng này sang phân đoạn khác trong tập lệnh Node.js. Khi tôi sử dụng fs.renameSync
tôi đã nhận được Error: EXDEV, Cross-device link
. Tôi muốn sao chép nó và xóa bản gốc, nhưng tôi không thấy lệnh để sao chép tệp. Điều này có thể giải quyết như thế nào?Làm cách nào để di chuyển tệp vào một phân vùng hoặc thiết bị khác trong Node.js?
Trả lời
Bạn cần sao chép và hủy liên kết khi di chuyển tệp qua các phân đoạn khác nhau. Hãy thử điều này,
var fs = require('fs');
//var util = require('util');
var is = fs.createReadStream('source_file');
var os = fs.createWriteStream('destination_file');
is.pipe(os);
is.on('end',function() {
fs.unlinkSync('source_file');
});
/* node.js 0.6 and earlier you can use util.pump:
util.pump(is, os, function() {
fs.unlinkSync('source_file');
});
*/
Tôi biết điều này đã được trả lời, nhưng tôi chạy qua một vấn đề tương tự và kết thúc với một cái gì đó dọc theo dòng:
require('child_process').spawn('cp', ['-r', source, destination])
Điều này không là gọi lệnh cp
("sao chép"). Vì chúng tôi đang bước ra ngoài Node.js, lệnh này cần được hệ thống của bạn hỗ trợ.
Tôi biết nó không phải là thanh lịch nhất, nhưng nó đã làm những gì tôi cần :)
Một giải pháp nữa cho vấn đề.
Có một gói gọi là fs.extra được viết bởi "coolaj86" trên npm.
Bạn sử dụng nó như vậy: npm install fs.extra
fs = require ('fs.extra');
fs.move ('foo.txt', 'bar.txt', function (err) {
if (err) { throw err; }
console.log ("Moved 'foo.txt' to 'bar.txt'");
});
Tôi đã đọc các mã nguồn cho điều này. Nó cố gắng để làm một tiêu chuẩn fs.rename()
sau đó, nếu nó không thành công, nó có một bản sao và xóa bản gốc bằng cách sử dụng cùng một util.pump()
mà @chandru sử dụng.
Bằng cách này, tôi đã nói với coolaj86 trên github và ông nhận thức được rằng util.pump() không được chấp nhận trong nút 0.10 và sẽ được sửa chữa nhanh chóng. – erapert
Tác giả của gói fs-extra là jprichardson và coolaj86 là một cộng tác viên (xem https://github.com/jprichardson/node-fs-extra để biết thêm). – davidbourguignon
để nhập khẩu các mô-đun và lưu nó vào tập tin package.json bạn
npm install mv --save
sau đó sử dụng nó như vậy:
var mv = require('mv');
mv('source_file', 'destination_file', function (err) {
if (err) {
throw err;
}
console.log('file moved successfully');
});
đây không phải là sự thay thế phù hợp cho fs.renameSync, vì nó không đồng bộ. https://github.com/andrewrk/node-mv/issues/9 – Michael
tôi đã thực hiện một mô-đun Node.js mà chỉ xử lý nó cho bạn . Bạn không phải suy nghĩ về việc liệu nó sẽ được di chuyển trong cùng một phân vùng hay không. Đó là giải pháp nhanh nhất hiện có, vì nó sử dụng API Node.js fs.copyFile()
gần đây để sao chép tệp khi di chuyển đến một phân vùng/đĩa khác.
Chỉ cần cài đặt move-file
:
$ npm install move-file
Sau đó sử dụng nó như thế này:
const moveFile = require('move-file');
(async() => {
await moveFile(fromPath, toPath);
console.log('File moved');
})();
- 1. Làm cách nào để di chuyển tệp trong node.js?
- 2. Làm cách nào để nhúng một vùng văn bản vào trong một vùng văn bản khác trong HTML?
- 3. Làm thế nào tôi có thể ghi vào thiết bị NUL trong Windows từ node.js?
- 4. Làm cách nào để di chuyển tệp dự án Xcode 4.2 sang một thư mục khác?
- 5. PostgreSQL: UPDATE ngụ ý di chuyển trên phân vùng
- 6. Làm cách nào để chuyển một tệp vào một hàm?
- 7. Làm cách nào để thêm trường thập phân trong Tệp di chuyển Codeigniter?
- 8. Tệp hàng loạt để di chuyển tệp vào một thư mục khác
- 9. Cách di chuyển bảng từ một vùng bảng này sang bảng khác trong oracle 11g
- 10. Tắt di chuyển trên thiết bị di động
- 11. Làm cách nào để tạo công việc trên thiết bị di động trong Android?
- 12. R: dev.copy2pdf, nhiều thiết bị đồ họa vào một tệp, cách nối thêm vào tệp?
- 13. Cách quản lý tệp trên Thiết bị di động MTP?
- 14. Di chuyển thiết bị Hibernate để xây dựng thời gian
- 15. Làm thế nào để có chiều cao animate trong CSS hoặc Javascript trên thiết bị di động
- 16. Làm cách nào để di chuyển một bảng vào một giản đồ trong T-SQL
- 17. Truy cập vào vùng chứa DI
- 18. Làm cách nào để di chuyển một bảng vào một Nhóm tệp cụ thể trong SQL Server 2008
- 19. Làm cách nào để di chuyển phương thức chính sang một lớp khác trong Scala?
- 20. Thiết bị đầu cuối Bash Chuyển hướng đến một Thiết bị đầu cuối khác
- 21. Làm thế nào để phân vùng một gói tham số?
- 22. Làm thế nào để chuyển đổi tệp .p12 thành tệp .pem bằng Thiết bị đầu cuối?
- 23. Làm thế nào để ghi dữ liệu nhị phân vào một tệp bằng cách sử dụng node.js?
- 24. Phân tích tệp Microsoft Office trong Node.JS
- 25. Cách di chuyển lên một thư mục có Thiết bị đầu cuối trong OSX
- 26. Thiết kế phân vùng để lưu trữ bảng Azure
- 27. Đổi tên và di chuyển tệp trong Bash hoặc Perl
- 28. Làm thế nào để di chuyển một cây con khác cây con trong emacs org-mode
- 29. Chuyển tệp giữa các thiết bị Android?
- 30. Làm cách nào để kiểm tra thiết kế trang web trên thiết bị di động?
Và, không giống như các giải pháp khác, dọn dẹp các thư mục nguồn. –
Đây không phải là nguồn tài nguyên rất chuyên sâu? – Thomaschaaf
util.pump không được chấp nhận. sử dụng is.pipe (os) và sau đó lắng nghe sự kiện 'kết thúc' trên luồng đầu ra. – andrewrk