Saya harus memasukkan file teks ke terminal dan kemudian membaca data darinya, bagaimana saya bisa melakukan ini?
node server.js file.txt
Bagaimana cara saya melewati jalur dari terminal, bagaimana cara membacanya di sisi lain?
javascript
node.js
mewah
sumber
sumber
Jawaban:
Anda akan ingin menggunakan
process.argv
array untuk mengakses argumen baris perintah untuk mendapatkan nama file dan modul FileSystem (fs) untuk membaca file. Sebagai contoh:Untuk memecahnya sedikit untuk Anda
process.argv
biasanya akan memiliki panjang dua, item ke nol adalah penerjemah "node" dan yang pertama adalah skrip yang saat ini dijalankan oleh node, item setelah itu diteruskan pada baris perintah. Setelah Anda menarik nama file dari argv maka Anda dapat menggunakan fungsi sistem file untuk membaca file dan melakukan apapun yang Anda inginkan dengan isinya. Penggunaan sampel akan terlihat seperti ini:[Sunting] Seperti yang disebutkan @wtfcoder, menggunakan metode "
fs.readFile()
" mungkin bukan ide terbaik karena metode ini akan menyangga seluruh konten file sebelum menyerahkannya ke fungsi panggilan balik. Buffering ini berpotensi menggunakan banyak memori, tetapi yang lebih penting, buffering ini tidak memanfaatkan salah satu fitur inti node.js - asynchronous, evented I / O.Cara "node" untuk memproses file besar (atau file apa pun, sebenarnya) akan menggunakan
fs.read()
dan memproses setiap potongan yang tersedia karena tersedia dari sistem operasi. Namun, membaca file seperti itu mengharuskan Anda untuk melakukan penguraian / pemrosesan tambahan sendiri (mungkin) file dan sejumlah buffering mungkin tidak terhindarkan.sumber
var lines = data.split(/\r?\n/);
, maka array "baris" akan memiliki setiap baris.Gunakan fs dengan node.
sumber
IMHO,
fs.readFile()
harus dihindari karena memuat SEMUA file di memori dan tidak akan memanggil callback sampai semua file telah dibaca.Cara termudah untuk membaca file teks adalah dengan membacanya baris demi baris. Saya merekomendasikan BufferedReader :
Untuk struktur data yang kompleks seperti file .properties atau json, Anda perlu menggunakan parser (secara internal juga harus menggunakan pembaca buffer).
sumber
fs.readFile()
ataufs.readFileSync()
. Itu harus menjadi file besar untuk menyebabkan penantian yang nyata. Sebuah JSON file konfigurasi seperti package.json kemungkinan berada di bawah 1 kb, sehingga Anda dapat hanyafs.readFile()
danJSON.parse()
itu.Anda dapat menggunakan readstream dan pipe untuk membaca file baris demi baris tanpa membaca semua file ke dalam memori satu kali.
sumber
Saya memposting contoh lengkap yang akhirnya saya kerjakan. Di sini saya membaca file
rooms/rooms.txt
dari skriprooms/rooms.js
sumber