Jika direktori tujuan tidak ada, Anda akan mendapatkan kesalahan dengan kode ENOENT
[tidak ada file atau direktori seperti itu], jadi kami harus mempertimbangkan kasus ini
import fs from 'node:fs/promises';
import path from 'node:path';
const oldPath = '/path/to/file.js';
const newPath = '/path/to/another/directory/file.js';
// Create a helper function
async function moveFile[oldPath, newPath] {
// 1. Create the destination directory if it does not exist
// Set the `recursive` option to `true` to create all the subdirectories
await fs.mkdir[path.dirname[newPath], { recursive: true }];
// 2. Rename the file [move it to the new directory]
return fs.rename[oldPath, newPath];
await moveFile[oldPath, newPath];
console.log['File moved successfully'];
Tangani pemindahan file di berbagai titik pemasangan
Fungsi rename
_ tidak berfungsi di titik pemasangan yang berbeda, Anda akan mendapatkan kode kesalahan EXDEV
[tautan lintas perangkat tidak diizinkan], misalnya saat menggunakan volume Docker Anda akan menemukan kesalahan ini
Sesuai halaman manual ganti nama
Jalur lama dan jalur baru EXDEV tidak berada pada sistem file terpasang yang sama. [Linux mengizinkan sistem file untuk dipasang di banyak titik, tetapi rename[] tidak berfungsi di titik pemasangan yang berbeda, bahkan jika sistem file yang sama dipasang di keduanya. ]
Untuk menangani kasus ini, Anda dapat mundur untuk menyalin file ke jalur baru dan menghapus file asli
Dalam tutorial ini, kita akan belajar tentang cara memindahkan file dari satu direktori ke direktori lain di Node.js. js
Menggunakan fs. ganti nama metode
Node. js memiliki modul sistem file bawaan, yang memiliki metode fs.rename[]
yang membantu kita memindahkan file secara asinkron dari satu direktori ke direktori lain
Ini sebuah contoh
const fs = require["fs"];
const path = require["path"];
const currentPath = path.join[__dirname, "public", "car.png"];
const destinationPath = path.join[__dirname, "images", "car.png"];
fs.rename[currentPath, destinationPath, function [err] {
if [err] {
throw err
} else {
console.log["Successfully moved the file!"];
}
}];
_Argumen pertama dalam metode fs.rename[]
adalah currentPath
di mana file berada, argumen kedua adalah destinationPath
dan argumen ketiga adalah fungsi callback yang berjalan dengan argumen err
Catatan. fs. rename[] tidak bekerja dengan benar pada lintas partisi atau sistem file virtual
Untuk memindahkan file dengan benar di semua platform, ada paket npm yang disebut mv
, yang pertama kali mencoba metode fs.rename[]
kemudian fallback untuk menyalurkan file sumber ke folder tujuan dan menghapus file sumber
Untuk menggunakannya, pertama kita perlu menginstal paket mv
dari
npm install mv
1 dengan menjalankan perintah berikut Fungsi move[] memindahkan file atau direktori dari sumber ke tujuan yang ditentukan oleh pengguna. Jika Anda ingin memindahkan file ke folder di mana file dengan nama yang sama sudah ada, fungsi tersebut akan menimpa file tersebut jika kita telah menyetel opsi menimpa ke true selain itu akan menimbulkan kesalahan bahwa file sudah ada di
Sintaksis
fs.move[src,dest,options,callback];
Parameter. Fungsi ini menerima empat parameter seperti yang disebutkan di atas dan dijelaskan di bawah ini
- src. Ini adalah string yang berisi jalur file yang akan dipindahkan [jalur sumber]
- tujuan. Ini adalah string yang berisi jalur tempat file akan dipindahkan [jalur tujuan]
- pilihan. Ini adalah objek dengan penimpaan properti yang bisa benar atau salah. Secara default,. PALSU. Jika disetel ke true, file akan ditimpa jika file dengan nama yang sama ada di folder tujuan
- panggilan balik. Ini adalah fungsi yang akan dipanggil ketika fungsi move[] telah dilakukan. Itu akan menghasilkan kesalahan atau kesuksesan. Ini adalah parameter opsional, kita juga dapat menggunakan janji sebagai pengganti fungsi panggilan balik
Nilai pengembalian. Itu tidak mengembalikan apa pun
Ikuti langkah-langkah untuk mengimplementasikan fungsi
Modul dapat diinstal dengan menggunakan perintah berikut
npm install fs-extra
_Setelah instalasi modul Anda dapat memeriksa versi modul yang diinstal dengan menggunakan perintah ini
npm ls fs-extra
Buat file dengan nama index. js dan membutuhkan modul fs-extra dalam file menggunakan perintah berikut
const fs = require['fs-extra'];
_Buat folder kosong dengan nama tujuan dan file dengan nama file. txt. Kami akan memindahkan file ke folder tujuan menggunakan fungsi ini
Untuk menjalankan file, tulis perintah berikut di terminal
node index.js
Struktur proyek akan terlihat seperti ini
Contoh 1
indeks. js
// Requiring module
import fs from
"fs-extra"
;
npm install fs-extra_0
npm install fs-extra1
npm install fs-extra2
;
npm install fs-extra_5
npm install fs-extra_6
npm install fs-extra7
;
npm ls fs-extra0
npm ls fs-extra1
npm ls fs-extra2
npm ls fs-extra3
npm ls fs-extra4
npm ls fs-extra5
npm ls fs-extra6
npm ls fs-extra7
npm ls fs-extra3
npm ls fs-extra9
const fs = require['fs-extra'];_0
Keluaran. Sekarang periksa folder tujuan yang kita buat sebelumnya. Anda akan menemukan bahwa file dengan nama file. txt sekarang dipindahkan ke folder tujuan
Contoh 2. Mari kita ambil contoh lain. Di folder tujuan buat file dengan nama file. txt dan buat file lain dengan nama file. txt di luar folder tujuan. Kami akan mencoba menimpa properti fungsi dalam contoh ini. Struktur folder sekarang terlihat seperti
indeks. js
// Requiring module
import fs from
"fs-extra"
;
npm install fs-extra_0
npm install fs-extra1
npm install fs-extra2
;
npm install fs-extra_5
npm install fs-extra_6
npm install fs-extra7
;
npm ls fs-extra0
node index.js7
node index.js_8
node index.js9
// Requiring module
0 // Requiring module
1npm ls fs-extra3
// Requiring module
3// Requiring module
4// Requiring module
5// Requiring module
6// Requiring module
7// Requiring module
8
npm ls fs-extra3
import fs from
0import fs from
1import fs from
2Keluaran. Anda akan melihat bahwa file di folder tujuan sekarang ditimpa oleh file di luar folder
Catatan. Jika Anda belum menyetel properti timpa ke false, program di atas akan menghasilkan kesalahan berikut