Bagaimana saya bisa memindahkan file (seperti shell perintah mv) di node.js? Apakah ada metode untuk itu atau saya harus membaca file, menulis ke file baru dan menghapus file yang lebih lama?
151
Menurut komentar seppo0010, saya menggunakan fungsi rename untuk melakukan itu.
http://nodejs.org/docs/latest/api/fs.html#fs_fs_rename_oldpath_newpath_callback
fs.rename (oldPath, newPath, callback)
Ditambahkan dalam: v0.0.2
oldPath <String> | <Buffer> newPath <String> | <Buffer> callback <Function>
Ganti nama asinkron (2). Tidak ada argumen selain pengecualian yang mungkin diberikan untuk panggilan balik penyelesaian.
Contoh ini diambil dari: Node.js dalam Aksi
sumber
Menggunakan nodejs secara asli
(CATATAN: "Ini tidak akan berfungsi jika Anda melintasi partisi atau menggunakan sistem file virtual yang tidak mendukung memindahkan file. [...]" - Flavien Volken 2 Sep 15 'jam 12:50 ")
sumber
Gunakan modul mv node yang pertama kali akan mencoba melakukan
fs.rename
dan kemudian mundur untuk menyalin dan kemudian membatalkan tautan.sumber
mv
modul simpul ini . Saya suka menggunakan npm untuk menginstal;npm install mv --save-dev
; inilah tautan npmutil.pump
ditinggalkan di simpul 0.10 dan menghasilkan pesan peringatanJadi solusi untuk menyalin file menggunakan stream adalah:
sumber
Menggunakan fungsi ganti nama:
dimana
dengan asumsi bahwa Anda ingin menjaga nama file tidak berubah.
sumber
The
fs-extra
modul memungkinkan Anda untuk melakukan hal ini dengan itumove()
metode. Saya sudah menerapkannya dan berfungsi dengan baik jika Anda ingin memindahkan file dari satu direktori ke direktori lainnya - mis. menghapus file dari direktori sumber. Harus bekerja untuk sebagian besar kasus dasar.sumber
Berikut ini contoh menggunakan util.pump, dari >> Bagaimana cara memindahkan file a ke partisi atau perangkat lain di Node.js?
sumber
fs.rename()
(dalam volume mengubah nama file dan memindahkannya adalah hal yang sama).Menggunakan janji untuk versi Node yang lebih besar dari 8.0.0:
sumber
fs.rename
tidak berfungsi jika Anda berada di lingkungan Docker dengan volume.async
deklarasi kemoveThem
fungsi.Hanya 2 sen saya sebagaimana dinyatakan dalam jawaban di atas : Metode copy () tidak boleh digunakan apa adanya untuk menyalin file tanpa sedikit penyesuaian:
Fungsi salin yang dibungkus dalam Janji:
Namun, perlu diingat bahwa sistem file mungkin macet jika folder target tidak ada.
sumber
Saya akan memisahkan semua fungsi yang terlibat (yaitu
rename
,copy
,unlink
) dari satu sama lain untuk mendapatkan fleksibilitas dan promisify semuanya, tentu saja:moveFile
hanyalah fungsi kenyamanan dan kita dapat menerapkan fungsi secara terpisah, ketika, misalnya, kita membutuhkan penanganan pengecualian berbutir halus.sumber
Shelljs adalah solusi yang sangat berguna.
perintah: mv ([opsi,] sumber, tujuan)
Pilihan yang tersedia:
-f: force (perilaku default)
-n: untuk mencegah penulisan ulang
sumber
ini adalah pengulangan dari jawaban teoman shipahi dengan nama yang sedikit kurang ambigu, dan mengikuti prinsip desain kode pendefinisian sebelum Anda mencoba menyebutnya. (Sementara simpul memungkinkan Anda untuk melakukan sebaliknya, itu bukan praktik yang baik untuk menempatkan kereta di depan kuda.)
sumber
Dengan bantuan URL di bawah ini, Anda dapat menyalin atau memindahkan file Anda CURRENT Source to Destination Source
sumber
Jika Anda mencoba untuk memindahkan atau mengganti nama file sumber node.js, coba ini https://github.com/viruschidai/node-mv . Ini akan memperbarui referensi ke file itu di semua file lainnya.
sumber
Anda dapat menggunakan
move-file
paket npm:Pertama instal paket:
Pemakaian:
sumber