Próbuję przenieść plik z jednej partycji do drugiej w skrypcie Node.js. Kiedy użyłem fs.renameSync
, otrzymałem Error: EXDEV, Cross-device link
. Skopiowałbym go i skasował oryginał, ale nie widzę też polecenia do kopiowania plików. Jak to zrobić?Jak przenieść plik a na inną partycję lub urządzenie w Node.js?
Odpowiedz
Należy skopiować i odłączyć podczas przenoszenia plików między różnymi partycjami. Spróbuj tego,
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');
});
*/
wiem, że to jest już odpowiedział, ale natknąłem się na podobny problem i skończyło się coś wzdłuż linii:
require('child_process').spawn('cp', ['-r', source, destination])
Co to robi to wywołać polecenie cp
("Kopiuj"). Ponieważ wychodzimy poza Node.js, to polecenie musi być obsługiwane przez twój system.
wiem, że nie jest to najbardziej elegancki, ale to nie to, co potrzebne :)
One bardziej rozwiązania problemu.
Istnieje pakiet o nazwie fs.extra napisany przez "coolaj86" na npm.
go używać tak: 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'");
});
Czytałem kod źródłowy dla tej rzeczy. Podejmuje próbę utworzenia standardu fs.rename()
, a jeśli się nie powiedzie, wykona kopię i usunie oryginał za pomocą tego samego, którego używa @chandru.
Przy okazji rozmawiałem z coolaj86 na github i jest on świadomy tego, że używa.Funkcja pump() jest przestarzała w węźle 0.10 i wkrótce ją naprawi. – erapert
Autorem pakietu fs-extra jest jprichardson, a coolaj86 jest kontrybutorem (więcej: https://github.com/jprichardson/node-fs-extra). – davidbourguignon
zaimportować moduł i zapisać go do pliku package.json
npm install mv --save
następnie używać go tak:
var mv = require('mv');
mv('source_file', 'destination_file', function (err) {
if (err) {
throw err;
}
console.log('file moved successfully');
});
nie jest to odpowiedni zamiennik dla fs.renameSync, ponieważ nie jest synchroniczny. https://github.com/andrewrk/node-mv/issues/9 – Michael
Zrobiłem moduł node.js że tylko obsługuje go dla Ciebie . Nie musisz się zastanawiać, czy zostanie przeniesiony na tę samą partycję, czy nie. Jest to najszybsze dostępne rozwiązanie, ponieważ korzysta z najnowszego interfejsu API Node.js fs.copyFile()
, aby skopiować plik podczas przenoszenia do innej partycji/dysku.
Wystarczy zainstalować move-file
:
$ npm install move-file
następnie używać go tak:
const moveFile = require('move-file');
(async() => {
await moveFile(fromPath, toPath);
console.log('File moved');
})();
- 1. Jak przenieść pliki w pliku node.js?
- 2. Jak przenieść plik w Pythonie
- 3. Jak "przekierować" plik cookie na inną stronę?
- 4. Jak zmienić plik mp3 na plik wav w pliku node.js
- 5. Czy partycję można zastosować do `a -> IO Bool`?
- 6. Przenieść plik między urządzeniami z systemem Android?
- 7. Jak przenieść plik do niepustego katalogu?
- 8. Jak przenieść plik PERLBREW_ROOT do innego katalogu?
- 9. Jak znaleźć najnowszą partycję w tabeli HIVE
- 10. Jak przekonwertować metodę lub lambda na procę inną niż lambda
- 11. Jak przenieść zaznaczony tekst Lewy lub prawy
- 12. JQuery - Jak przenieść li na inną pozycję w ul? (wymiana 2 li)
- 13. Jak przenieść elementy z listy na inną listę w języku C#?
- 14. Jak przenieść obraz base64 z klienta na serwer lub pobrać plik binarny/base64 z s3?
- 15. Jak przenieść plik między dwoma podłączonymi komputerami w pythonie?
- 16. Jak zignorować pliki w węźle node.js, które są wymagane przez inny plik lub komponent?
- 17. Jak uruchomić plik node.js w siatce netto?
- 18. Jak sparować lub usunąć sparowane urządzenie bluetooth programowo na Androidzie?
- 19. Prześlij stary formularz Google, a następnie przekieruj na inną stronę
- 20. jak otworzyć partycję za pomocą API CreateFile?
- 21. Jak poprawnie opróżnić plik Node.js writeStream?
- 22. Przekieruj WWW na stronę inną niż WWW lub na odwrót?
- 23. Wykryj Symulator iOS a urządzenie iOS
- 24. watchdog: Urządzenie lub zasoby zajęte
- 25. Jak przenieść WM na Wayland?
- 26. Jak przenieść element na NSMutableArray?
- 27. Jak bezpiecznie przenieść niektóre dane z serwera na urządzenie z Androidem
- 28. Jak stabilny jest plik AIRBNB node.js?
- 29. jak przenieść osie na środek wykresu?
- 30. Plik żądania Node.js czasami jest pusty lub nie istnieje
I, w przeciwieństwie do innych rozwiązań, czyści katalog źródłowy. –
Czy to nie jest bardzo wymagające zasoby? – Thomaschaaf
util.pump jest przestarzałe. użyj is.pipe (os), a następnie posłuchaj zdarzenia "end" w strumieniu wyjściowym. – andrewrk