Rumah > hujung hadapan web > Soal Jawab bahagian hadapan > Apakah modul fs dalam nod

Apakah modul fs dalam nod

青灯夜游
Lepaskan: 2022-07-12 20:04:44
asal
2588 orang telah melayarinya

Dalam nod, modul fs merujuk kepada "modul sistem fail", iaitu modul yang digunakan untuk mengendalikan fail. Kebanyakan API modul fs menyediakan tiga kaedah pengendalian: 1. Operasi fail segerak: kod akan disekat dan tidak akan terus dilaksanakan 2. Fail operasi panggil balik tak segerak: kod tidak akan disekat, dan fungsi panggil balik perlu; dilalui. Apabila keputusan diperoleh, fungsi panggil balik dilaksanakan 3. Fail operasi Asynchronous Promise: kod tidak akan disekat, dan Promise akan dikembalikan dengan memanggil operasi kaedah melalui fs.promises.

Apakah modul fs dalam nod

Persekitaran pengendalian tutorial ini: sistem Windows 7, nodejs versi 16, komputer DELL G3.

Modul sistem fail (pendek kata fs) membolehkan kami mengakses dan berinteraksi dengan sistem fail pada komputer kami.

modul fs ialah modul yang disediakan secara rasmi oleh Node.js untuk mengendalikan fail. Ia menyediakan satu siri kaedah dan sifat untuk memenuhi keperluan operasi fail pengguna.

  • kaedah fs.readFile(), digunakan untuk membaca kandungan fail yang ditentukan

  • fs.writeFile() kaedah, digunakan untuk If anda mahu menulis kandungan pada fail yang ditentukan dalam kod JavaScript

Cara menggunakan fs

Modul sistem fail ialah teras Node.js modul. Ini bermakna kita tidak perlu memasangnya. Satu-satunya perkara yang perlu kita lakukan ialah mengimport modul fs ke dalam failnya sendiri.

Jadi, di bahagian atas fail tambahkan:

const fs = require('fs')
Salin selepas log masuk

Sekarang kita boleh memanggil sebarang kaedah daripada modul sistem fail menggunakan awalan fs .

Sebagai alternatif, kami hanya boleh mengimport kaedah yang diperlukan daripada API fs seperti berikut:

const { writeFile, readFile } = require('fs')
Salin selepas log masuk

Nota: Untuk kemudahan, kami juga perlu mengimport modul laluan. Ia adalah satu lagi modul teras Node.js yang membolehkan kami bekerja dengan laluan fail dan direktori.

Selepas mengimport modul fs, tambahkan fail:

const path = require('path')
Salin selepas log masuk

Apabila menggunakan modul sistem fail, modul laluan tidak diperlukan. Tetapi ia banyak membantu kami!

Penyegerakan dan tak segerak

Kendalian fail modul fs secara amnya menyokong kedua-dua API segerak dan tak segerak, dan tak segerak juga termasuk fungsi panggil balik dan borang janji. Penyegerakan biasanya diikuti dengan perkataan penyegerakan.

Kebanyakan API modul fs menyediakan tiga kaedah operasi:

  • Operasi segerak fail: kod akan disekat dan tidak akan terus dilaksanakan

  • Fail operasi panggil balik tak segerak: kod tidak akan disekat, fungsi panggil balik perlu dihantar masuk. Apabila keputusan diperoleh, fungsi panggil balik dilaksanakan

  • Fail operasi Asynchronous Promise: kod tidak Akan disekat operasi kaedah panggilan melalui fs.promises akan mengembalikan Janji, yang boleh diproses melalui masa itu dan menangkap.

Perlu diambil perhatian bahawa secara lalai, semua kaedah fs adalah tak segerak. Walau bagaimanapun, kami boleh menggunakan versi yang disegerakkan dengan menambahkan Penyegerakan pada penghujung kaedah.

Sebagai contoh, versi segerak bagi kaedah writeFile ialah writeFileSync. Kaedah segerak melengkapkan kod secara serentak, jadi ia menyekat utas utama. Menyekat urutan utama dalam Node.js dianggap sebagai amalan buruk dan kita tidak sepatutnya melakukannya.

Oleh itu, di bawah ini kita semua akan menggunakan kaedah tak segerak dalam modul sistem fail.

Menulis ke Fail

Untuk menulis ke fail daripada aplikasi Node.js, gunakan kaedah writeFile. Kaedah

writeFile menerima sekurang-kurangnya parameter berikut:

  • Nama fail
  • Kandungan
  • Panggil Balik

Jika Fail yang dinyatakan sudah wujud, ia akan menggantikan kandungan lama dengan kandungan yang anda berikan sebagai hujah. Jika fail yang ditentukan tidak wujud, fail baharu akan dibuat.

Selepas mengimport modul fs dan path, tulis kod berikut dalam fail:

fs.writeFile('content.txt', 'All work and no play makes Jack a dull boy!', err => {
  if (err) throw err

  process.stdout.write('创建成功!')
})
Salin selepas log masuk

Kod di atas akan mencipta fail baharu bernama content.txt dan Teks yang ditambah All work and no play makes Jack a dull boy! sebagai kandungan. Jika terdapat sebarang ralat, fungsi panggil balik akan membuang ralat itu. Jika tidak, ia akan mengeluarkan ke konsol bahawa fail itu berjaya dibuat.

writeFile Terdapat varian lain, seperti:

  • fs.writeFileSync — menulis fail serentak
  • fsPromises.writeFile — menulis menggunakan API berasaskan Promise Into fail

Lihat intipati ini: https://gist.github.com/catalinpit/571ba06c06214b5c8744036c6500af92

>Membaca dari fail

membaca fail, laluan ke fail perlu dibuat dan disimpan.

Laluan ke modul sangat berguna di sini. path

Menggunakan kaedah

dalam modul join, anda boleh mencipta laluan fail seperti ini: path

const filePath = path.join(process.cwd(), 'content.txt')
Salin selepas log masuk
Parameter pertama

mengembalikan direktori kerja semasa. Memandangkan anda mempunyai laluan fail, anda boleh membaca kandungan fail tersebut. process.cwd()

Tulis kod berikut dalam fail:

fs.readFile(filePath, (error, content) => {
  if (error) throw error

  process.stdout.write(content)
})
Salin selepas log masuk

Kaedah ini menerima sekurang-kurangnya dua parameter: readFile

  • 文件的路径
  • 回调

如果有错误,它会抛出一个错误。否则,它会在终端中输出文件内容。

readFile 还有其他变体,例如:

  • fs.readFileSync — 同步写入文件
  • fsPromises.readFile — 使用基于 Promise 的 API 写入文件

查看此要点:https://gist.github.com/catalinpit/badc2a539a44412892a0e05a9575d54d

读取目录的内容

在目录中显示文件与读取文件内容非常相似。但是,不是传递文件路径,而是传递当前工作目录(我们可以传递任何其他目录)。

然后,传递一个回调函数来处理响应。在文件中编写以下代码:

fs.readdir(process.cwd(), (error, files) => {
  if (error) throw error

  console.log(files)
})
Salin selepas log masuk

到目前为止,我们只使用 process.stdout.write 将内容输出到终端。但是,您可以简单地使用 console.log,就像上面的代码片段一样。

如果运行该应用程序,我们应该会得到一个包含目录中所有文件的数组。

查看此要点:https://gist.github.com/catalinpit/f82c4e6ae3acd5d97efdecb0bc67979e

删除文件

文件系统模块有一种方法,允许您删除文件。但是,需要注意的是,它只适用于文件,不适用于目录。

当以文件路径作为参数调用 unlink 方法时,它将删除该文件。将以下代码段添加到文件中:

fs.unlink(filePath, error => {
  if (error) throw error

  console.log('文件已删除!')
})
Salin selepas log masuk

如果您重新运行代码,您的文件将被删除!

查看此要点:https://gist.github.com/catalinpit/b1201434218c400f77e042109bfce99e

创建目录

我们可以使用 mkdir 方法异步创建目录。在文件中编写以下代码:

fs.mkdir(`${process.cwd()}/myFolder/secondFolder`, { recursive: true }, (err) => {
  if (err) throw err

  console.log('已成功创建文件夹!')
})
Salin selepas log masuk

首先,要在当前工作目录中创建一个新文件夹。如前所述,您可以使用 cwd() 方法从 process 对象获取当前工作目录。

然后,传递要创建的一个或多个文件夹。但是,这并不意味着您必须在当前工作目录中创建新文件夹。你可以在任何地方创建它们。

现在,第二个参数是递归选项。如果未将其设置为 true,则无法创建多个文件夹。如果将 recursive 选项设置为 false,上述代码将给出一个错误。试试看!

但是,如果您只想创建一个文件夹,则无需将 recursive 选项设置为 true

以下代码可以正常工作!

fs.mkdir(`${process.cwd()}/myFolder`, err => {
  if (err) throw err

  console.log('已成功创建文件夹!')
});
Salin selepas log masuk

因此,我想强调使用 recursive。如果要在文件夹中创建文件夹,则需要将其设置为 true。它将创建所有文件夹,即使它们不存在。

另一方面,如果您只想创建一个文件夹,可以将其保留为 false

查看此要点:https://gist.github.com/catalinpit/09bad802541102c0cce2a2e4c3985066

删除目录

删除目录的逻辑类似于创建目录。如果您查看为创建目录而编写的代码和下面的代码,您会发现相似之处。

因此,在文件中编写以下代码:

fs.rmdir(`${process.cwd()}/myFolder/`, { recursive: true }, err => {
  if (err) throw err

  console.log('已成功删除文件夹!')
})
Salin selepas log masuk

使用文件系统模块中的 rmdir 方法,并传递以下参数:

  • 要删除的目录
  • 递归属性
  • 回调

如果将 recursive 属性设置为 true,它将删除文件夹及其内容。请务必注意,如果文件夹中包含内容,则需要将其设置为 true。否则,您将得到一个错误。

以下代码段仅在文件夹为空时有效:

fs.rmdir(`${process.cwd()}/myFolder/`, err => {
  if (err) throw err

  console.log('已成功删除文件夹!')
})
Salin selepas log masuk

如果 myFolder 中有其他文件和/或文件夹,如果未传递 { recursive: true },则会出现错误。

知道何时使用 recursive 选项以及何时不避免问题是很重要的。

查看此要点:https://gist.github.com/catalinpit/a8cb6aca75cef8d6ac5043eae9ba22ce

目录/文件重命名

使用 fs 模块,您可以重命名目录和文件。下面的代码片段显示了如何使用 rename 方法进行此操作。

// 重命名一个目录fs.rename(`${process.cwd()}/myFolder/secondFolder`, `${process.cwd()}/myFolder/newFolder`, err => {
  if (err) throw err

  console.log('目录重命名!')
});// 重命名一个文件fs.rename(`${process.cwd()}/content.txt`, `${process.cwd()}/newFile.txt`, err => {
  if (err) throw err

  console.log('文件重命名!')
});
Salin selepas log masuk

rename 方法包含三个参数:

  • 第一个参数是现有的文件夹/文件
  • 第二个参数是新名称
  • 回调

因此,要重命名文件或目录,我们需要传递当前文件/目录的名称和新名称。运行应用程序后,应更新目录/文件的名称。

需要注意的是,如果新路径已经存在(例如,文件/文件夹的新名称),它将被覆盖。因此,请确保不要错误地覆盖现有文件/文件夹。

查看此要点:https://gist.github.com/catalinpit/5c3e7c6ae39d09996ff67175a719122e

向文件中添加内容

我们还可以使用 appendFile 方法向现有文件添加新内容。

如果比较 writeFileappendFile 这两种方法,我们可以发现它们是相似的。传递文件路径、内容和回调。

fs.appendFile(filePath, '\nAll work and no play makes Jack a dull boy!', err => {
  if (err) throw err
  
  console.log('All work and no play makes Jack a dull boy!')
})
Salin selepas log masuk

上面的代码片段演示了如何向现有文件添加新内容。如果运行应用程序并打开文件,您应该会看到其中的新内容。

更多node相关知识,请访问:nodejs 教程

Atas ialah kandungan terperinci Apakah modul fs dalam nod. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan