Jak mogę przenieść pliki (takie jak powłoka poleceń mv) na node.js? Czy jest na to jakaś metoda, czy powinienem przeczytać plik, napisać do nowego pliku i usunąć starszy plik?
151
Zgodnie z komentarzem seppo0010, użyłem do tego funkcji zmiany nazwy.
http://nodejs.org/docs/latest/api/fs.html#fs_fs_rename_oldpath_newpath_callback
fs.rename (stara ścieżka, nowa ścieżka, wywołanie zwrotne)
Dodano w: v0.0.2
oldPath <String> | <Buffer> newPath <String> | <Buffer> callback <Function>
Asynchroniczna zmiana nazwy (2). Żadne inne argumenty niż możliwy wyjątek nie są podawane do wywołania zwrotnego zakończenia.
Ten przykład pochodzi z: Node.js w akcji
źródło
Używanie nodejs natywnie
(UWAGA: „To nie zadziała, jeśli przechodzisz przez partycje lub używasz wirtualnego systemu plików nieobsługującego przenoszenia plików. [...]” - Flavien Volken 2 września 15 o 12:50 ”)
źródło
Użyj modułu węzła mv , który najpierw spróbuje wykonać,
fs.rename
a następnie powrócić do kopiowania i rozłączenia.źródło
mv
modułu węzła. Lubię używać npm do instalacji;npm install mv --save-dev
; tutaj jest link npmutil.pump
jest przestarzały w węźle 0.10 i generuje komunikat ostrzegawczyTak więc rozwiązanie do kopiowania plików za pomocą strumieni to:
źródło
Korzystanie z funkcji zmiany nazwy:
gdzie
zakładając, że chcesz zachować niezmienioną nazwę pliku.
źródło
fs-extra
Moduł pozwala to zrobić z jegomove()
metodą. Już to zaimplementowałem i działa dobrze, jeśli chcesz całkowicie przenieść plik z jednego katalogu do drugiego - tj. usunięcie pliku z katalogu źródłowego. Powinien działać w większości podstawowych przypadków.źródło
Oto przykład użycia util.pump, z >> Jak przenieść plik a na inną partycję lub urządzenie w Node.js?
źródło
fs.rename()
(w obrębie woluminu zmiana nazwy pliku i przeniesienie go to to samo).Korzystanie z obietnic dla wersji węzła wyższych niż 8.0.0:
źródło
fs.rename
nie zadziała, jeśli jesteś w środowisku Docker z woluminami.async
deklarację domoveThem
funkcji.Tylko moje 2 centy, jak stwierdzono w powyższej odpowiedzi : Metoda copy () nie powinna być używana do kopiowania plików bez niewielkiej korekty:
Funkcja kopiowania zawarta w obietnicy:
Należy jednak pamiętać, że system plików może ulec awarii, jeśli folder docelowy nie istnieje.
źródło
Chciałbym oddzielić wszystkich zaangażowanych funkcje (tj
rename
,copy
,unlink
) od siebie, aby zyskać elastyczność i promisify wszystko, oczywiście:moveFile
to tylko wygodna funkcja, którą możemy zastosować osobno, gdy na przykład potrzebujemy dokładniejszej obsługi wyjątków.źródło
Shelljs to bardzo przydatne rozwiązanie.
polecenie: mv ([opcje,] źródło, cel)
Dostępne opcje:
-f: force (domyślne zachowanie)
-n: aby zapobiec nadpisywaniu
źródło
jest to powtórzenie odpowiedzi Teomana Shipahiego z nieco mniej niejednoznaczną nazwą i zgodnie z zasadą projektową definiowania kodu, zanim spróbujesz go wywołać. (Chociaż węzeł pozwala zrobić inaczej, stawianie wózka przed koniem nie jest dobrą praktyką).
źródło
Za pomocą poniższego adresu URL możesz skopiować lub przenieść plik CURRENT Source do Destination Source
źródło
Jeśli próbujesz przenieść lub zmienić nazwę pliku źródłowego node.js, spróbuj tego https://github.com/viruschidai/node-mv . Zaktualizuje odniesienia do tego pliku we wszystkich innych plikach.
źródło
Możesz skorzystać z
move-file
pakietu npm:Najpierw zainstaluj pakiet:
Stosowanie:
źródło