Jak mogę przenieść pliki (takie jak powłoki poleceń mv) na węźle node.js? Czy jest jakaś metoda, czy powinienem przeczytać plik, napisać do nowego pliku i usunąć starszy plik?Jak przenieść pliki w pliku node.js?
Odpowiedz
Według seppo0010 komentarzu użyłem funkcji Zmień nazwę, aby to zrobić.
http://nodejs.org/docs/latest/api/fs.html#fs_fs_rename_oldpath_newpath_callback
fs.rename (oldpath, newpath, zwrotna)
dodane w: v0.0.2
oldPath <String> | <Buffer> newPath <String> | <Buffer> callback <Function>
asynchroniczny zmiany nazwy (2). Żadne argumenty inne niż możliwy wyjątek są podawane do wywołania zwrotnego zakończenia.
Oto przykład przy użyciu util.pump z >>How do I move file a to a different partition or device in Node.js?
var fs = require('fs'),
util = require('util');
var is = fs.createReadStream('source_file')
var os = fs.createWriteStream('destination_file');
util.pump(is, os, function() {
fs.unlinkSync('source_file');
});
Warto zauważyć, że trzeba to zrobić tylko podczas przenoszenia plików w woluminach. W przeciwnym razie możesz po prostu użyć ['fs.rename()'] (http://nodejs.org/docs/latest/api/fs.html#fs.rename) (w woluminie zmieniającym nazwę pliku i przenoszeniu go jest to ta sama rzecz). – s4y
util.pump jest przestarzałe. – andrewrk
http://stackoverflow.com/questions/4568689/how-do-i-move-file-a-to-a-different-partition-in-node-js#comment17237127_4571377 –
Użyj modułu węzła mv, który najpierw spróbuje wykonać fs.rename
, a następnie powrócić do kopiowania, a następnie odłączenia.
Dobrze działające dla prostych wymagań, aby przenieść plik. – arcseldon
andrewrk wydaje się być autorem tego modułu węzła 'mv'. Lubię używać npm do instalacji; 'npm install mv --save-dev'; Oto link [npm link] (https://www.npmjs.com/package/mv) –
util.pump
jest przestarzałe w węźle 0,10 i generuje komunikat ostrzegawczy
util.pump() is deprecated. Use readableStream.pipe() instead
więc rozwiązanie do kopiowania plików za pomocą strumieni jest:
var source = fs.createReadStream('/path/to/source');
var dest = fs.createWriteStream('/path/to/dest');
source.pipe(dest);
source.on('end', function() { /* copied */ });
source.on('error', function(err) { /* error */ });
To jest właściwy sposób kopiowania/przenoszenia pliku znajdującego się na dwóch różnych partycjach. Dziękuję Ci! – slickplaid
Jeśli próbujesz przenieść lub zmienić nazwę node.js plik źródłowy, spróbuj tego https://github.com/viruschidai/node-mv. Zaktualizuje odniesienia do tego pliku we wszystkich innych plikach.
Ten przykład wywodzą się z: Node.js in Action
posunięcie() funkcji, która zmienia nazwy, jeżeli to możliwe, lub wraca do kopiowania
var fs = require('fs');
module.exports = function move(oldPath, newPath, callback) {
fs.rename(oldPath, newPath, function (err) {
if (err) {
if (err.code === 'EXDEV') {
copy();
} else {
callback(err);
}
return;
}
callback();
});
function copy() {
var readStream = fs.createReadStream(oldPath);
var writeStream = fs.createWriteStream(newPath);
readStream.on('error', callback);
writeStream.on('error', callback);
readStream.on('close', function() {
fs.unlink(oldPath, callback);
});
readStream.pipe(writeStream);
}
}
Pracował jak urok. Dzięki! Jeśli mogę dodać trochę: "move" może być lepszą nazwą, gdy odłączy oldPath. – Jokester
pomocą funkcji zmiany nazwy:
fs.rename(getFileName, __dirname + '/new_folder/' + getFileName);
gdzie
getFilename = file.extension (old path)
__dirname + '/new_folder/' + getFileName
Założenie, że chcesz zachować niezmienioną nazwę pliku.
Należy pamiętać, że to nie zadziała, jeśli spróbujesz zmienić nazwę pliku między różnymi partycjami, ani w niektórych wirtualnych systemach plików (na przykład w dokowaniu) –
Moduł fs-extra
umożliwia to za pomocą metody move()
. Już go zaimplementowałem i działa dobrze, jeśli chcesz całkowicie przenieść plik z jednego katalogu do drugiego - np. usunięcie pliku z katalogu źródłowego. Powinien działać w większości podstawowych przypadków.
var fs = require('fs-extra')
fs.move('/tmp/somefile', '/tmp/does/not/exist/yet/somefile', function (err) {
if (err) return console.error(err)
console.log("success!")
})
to mikstura z teoman shipahi's answer z nieco mniej dwuznaczną nazwą, a po stosowania zasady projektowania definiowania kodu przed próbą to nazwać. (Podczas gdy węzeł pozwala robić inaczej, nie jest dobrą praktyką włożenie wózka przed konia.)
function rename_or_copy_and_delete (oldPath, newPath, callback) {
function copy_and_delete() {
var readStream = fs.createReadStream(oldPath);
var writeStream = fs.createWriteStream(newPath);
readStream.on('error', callback);
writeStream.on('error', callback);
readStream.on('close',
function() {
fs.unlink(oldPath, callback);
}
);
readStream.pipe(writeStream);
}
fs.rename(oldPath, newPath,
function (err) {
if (err) {
if (err.code === 'EXDEV') {
copy_and_delete();
} else {
callback(err);
}
return;// << both cases (err/copy_and_delete)
}
callback();
}
);
}
Korzystanie nodejs natywnie
var fs = require('fs')
var oldPath = 'old/path/file.txt'
var newPath = 'new/path/file.txt'
fs.rename(oldPath, newPath, function (err) {
if (err) throw err
console.log('Successfully renamed - AKA moved!')
})
- 1. Przenieść pliki do katalogów na podstawie pierwszej części nazwy pliku?
- 2. Jak przenieść elementy pliku initializer_list?
- 3. Node.js: Jak tworzyć pliki XML
- 4. Jak importować pliki non-node.js?
- 5. Jak przesłać pliki do GCloud w Node.js?
- 6. przenieść pliku w ExpressJS/NodeJS
- 7. Jak przenieść lub usunąć pliki w generatorze Yeoman?
- 8. jQuery.ajax() w pliku node.js?
- 9. Destructuring w pliku Node.JS
- 10. Kolejka zadań w pliku node.js
- 11. Jak odczytywać w nieskończoność w pliku Node.js
- 12. Jak przenieść elementy w górę/w dół w pliku tekstowym?
- 13. Node.js + Pliki statyczne z RESTIFY
- 14. Ustaw wartość pliku cookie w pliku Node.js
- 15. Jak wyświetlić treść funkcji w pliku node.js?
- 16. Jak używać zmiennej globalnej w pliku node.js?
- 17. jak wygenerować miniaturę wideo w pliku node.js?
- 18. Jak przechwytywać klawisze strzałek w pliku node.js
- 19. Jak do stub process.env w pliku node.js?
- 20. Jak obsłużyć żądanie POST w pliku node.js
- 21. Jak przenieść pliki amazon ec2 do linii poleceń s3
- 22. Node.js/Usuń zawartość w pliku
- 23. tym pliku .js w node.js
- 24. Jak przenieść plik w Pythonie
- 25. Pobierz postęp w pliku Node.js z żądaniem
- 26. sposób przekierowania w pliku node.js
- 27. Leniwe ładowanie w pliku node.js
- 28. Zgłaszanie błędu w pliku node.js
- 29. przenieść wszystkie pliki i foldery w folderze do innego?
- 30. Uwierzytelnianie Wordpress w pliku node.js
Dla tych, którzy zastanawiają się, gdzie trafił komentarz @ seppo0010: to była moja odpowiedź, którą skreśliłem i opublikowałem jako komentarz do OP. –
Nie będzie działać, jeśli przechodzisz przez partycje lub używasz wirtualnego systemu plików, który nie obsługuje przenoszenia plików. Lepiej użyj [tego rozwiązania] (http://stackoverflow.com/a/29105404/532695) z wersją zastępczą –