Sto provando a spostare un file da una partizione all'altra in uno script Node.js. Quando ho usato fs.renameSync
ho ricevuto Error: EXDEV, Cross-device link
. Lo coperei e cancellerei l'originale, ma non vedo neanche un comando per copiare i file. Come si può fare?Come si sposta un file su una partizione o un dispositivo diverso in Node.js?
risposta
È necessario copiare e scollegare quando si spostano file in partizioni diverse. Prova questo,
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');
});
*/
So che questa è già una risposta, ma mi sono imbattuto in un problema simile e si è conclusa con qualcosa sulla falsariga di:
require('child_process').spawn('cp', ['-r', source, destination])
Quello che fa è chiamare il comando cp
("copia"). Dato che stiamo uscendo da Node.js, questo comando deve essere supportato dal tuo sistema.
io so che non è il più elegante, ma ha fatto quello che mi serviva :)
più Una soluzione al problema.
C'è un pacchetto chiamato fs.extra scritto da "coolaj86" su npm.
si utilizza in questo modo: 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'");
});
Ho letto il codice sorgente di questa cosa. Tenta di eseguire uno standard fs.rename()
quindi, se fallisce, esegue una copia ed elimina l'originale utilizzando lo stesso util.pump()
utilizzato da @chandru.
A proposito, ho parlato coolaj86 su github e lui è consapevole che util.pump() è deprecato nel nodo 0.10 e verrà risolto a breve. – erapert
L'autore del pacchetto fs-extra è jprichardson e coolaj86 è un contributore (vedere https://github.com/jprichardson/node-fs-extra per ulteriori informazioni). – davidbourguignon
per importare il modulo e salvarlo il file package.json
npm install mv --save
quindi utilizzarlo in questo modo:
var mv = require('mv');
mv('source_file', 'destination_file', function (err) {
if (err) {
throw err;
}
console.log('file moved successfully');
});
questo non è un sostituto adatto per fs.renameSync, perché non è sincrono. https://github.com/andrewrk/node-mv/issues/9 – Michael
Ho fatto un modulo Node.js che solo gestisce per te . Non devi pensare se verrà spostato all'interno della stessa partizione o meno. È la soluzione più rapida disponibile, poiché utilizza la recente API Node.js fs.copyFile()
per copiare il file quando ci si sposta su un'altra partizione/disco.
Basta installare move-file
:
$ npm install move-file
quindi utilizzarlo in questo modo:
const moveFile = require('move-file');
(async() => {
await moveFile(fromPath, toPath);
console.log('File moved');
})();
- 1. Come si inserisce un file in un dispositivo in Django?
- 2. sposta tutti i file in una cartella in un altro?
- 3. Come si sposta il giornale mongodb su un altro disco fisso? Sembra essere codificato duro
- 4. Come si esegue un programma esterno in node.js su Windows?
- 5. Come posso avere un div dividere come se fosse su un dispositivo diverso con Bootstrap?
- 6. Come si sposta un collegamento simbolico relativo?
- 7. Il bit si sposta su un puntatore C?
- 8. Come utilizzare Esplora file su un dispositivo rooted?
- 9. Come si sposta un commit tra i rami in Git?
- 10. Utilizzare un tema diverso a seconda se il dispositivo è un tablet o telefono Android
- 11. Cocos2d sposta l'animazione su un percorso
- 12. Spark 1.0.2 (anche 1.1.0) si blocca su una partizione
- 13. Sovrascrivi un file in Node.js
- 14. Come impostare un tema diverso su un layout
- 15. Utilizzare un file setParameters.xml diverso?
- 16. come faccio a sapere se un "percorso" si trova in una partizione FAT32?
- 17. Come si sposta una finestra esistente in una nuova scheda?
- 18. Scrivere su un dispositivo blocco MDD
- 19. Come si sposta un elemento HTML in jQuery?
- 20. come ottenere una variabile da un file a un altro file in node.js
- 21. Come si salva un rendering jsreport su file con nodeJs?
- 22. Come si sposta un gruppo di file utilizzando un'attività Move MSBuild e un carattere jolly?
- 23. Come implementare un file asincrono. Elimina/Crea/Sposta?
- 24. Scrivere in un file CSV in Node.js
- 25. Come gestire i file su un dispositivo portatile MTP?
- 26. Come si scrive una stringa XML su un file?
- 27. GDI +: come si disegna una linea lunga un pollice su qualsiasi dispositivo su cui è disegnata?
- 28. Come si registra una sessione R su un file?
- 29. Come ottenere dettagliate informazioni dispositivo/partizione dal percorso del file su Linux (come UUID, hard disk, ecc seriale)
- 30. come importare un file csv in mysql usando node.js?
E, a differenza delle altre soluzioni, pulisce la directory di origine. –
Non è molto dispendioso in termini di risorse? – Thomaschaaf
util.pump è obsoleto. usa is.pipe (os) e poi ascolta l'evento 'end' sul flusso di output. – andrewrk