Heim  >  Artikel  >  Web-Frontend  >  Verstehen Sie schnell, wie Sie Dateien in NodeJS-Projekten hinzufügen, löschen, ändern und überprüfen

Verstehen Sie schnell, wie Sie Dateien in NodeJS-Projekten hinzufügen, löschen, ändern und überprüfen

青灯夜游
青灯夜游nach vorne
2021-09-01 18:22:031479Durchsuche

Verstehen Sie schnell, wie Sie Dateien in NodeJS-Projekten hinzufügen, löschen, ändern und überprüfen

Dieser Artikel richtet sich hauptsächlich an Studenten, die neu bei node.js sind. Über das Dateimodul von nodejs können wir Dateien auf unserem Betriebssystem erstellen, lesen, ändern und löschen Auf die gleiche Weise können auch Dateien oder Ordner auf Linux-Servern ausgeführt werden. Weil nodejs eine plattformübergreifende JavaScript-Laufumgebung ist. [Empfohlenes Lernen: „nodejs Tutorial“]

Offizielles Dokument zum Nodejs-Dateisystem: https://nodejs.org/dist/latest-v14.x/docs/api/fs.html

Quellcode: https:/ / github.com/cmdfas/nodejs-file-system

Projektstruktur:

├── files
│   ├── file1
│   └── file2
├── dir.js
├── index-callback.js
├── index-promise.js
└── stream.js

Allgemeine Dateioperationen

Callback-Funktionsoperationen

Erstellen Sie index-callback.js, der Code lautet wie folgtindex-callback.js,代码如下

const fs = require('fs')
const path = require('path')

// 读取文件
fs.readFile(path.join(__dirname, 'files', 'file1'), (err, buf) => {
    if (err) throw err
    console.log(buf.toString()) 
})

// 写入文件
fs.writeFile(path.join(__dirname, 'files', 'file3'), '欢迎光临', (err) => {
    if (err) throw err
    console.log('写入完成') 

  	// 在文件末尾追加
    fs.appendFile(path.join(__dirname, 'files', 'file3'), '\n\n男宾三位', (err) => {
        if (err) throw err
        console.log('追加完成') 

      	// 修改文件名称
        fs.rename(path.join(__dirname, 'files', 'file3'), path.join(__dirname, 'files', 'file3-rename'), (err) => {
            if (err) throw err
            console.log('改名完成') 
    
        })
    })
})

总结:

  • readFile用来读取文件的内容,在读取成功后在回调函数返回的是buffer格式,所以需要调用toString()方法
  • writeFile写入内容进文件,如果文件不存在会自动创建文件
  • appendFile在文件末尾追加内容,如果文件不存在会自动创建文件
  • rename可以用来修改文件名称
  • path.join用来拼接文件路径,可以避免不同操作系统路径格式不同的问题
  • __dirname是node.js全局变量,默认是当前项目目录

promise async await式操作

创建index-promise.js,代码如下

const fsPromises = require('fs').promises
const path = require('path')

const fileFunc = async () => {
    try {
        const data = await fsPromises.readFile(path.join(__dirname, 'files', 'file1'))
        console.log(data.toString())
        await fsPromises.unlink(path.join(__dirname, 'files', 'file1'))
      
        await fsPromises.writeFile(path.join(__dirname, 'files', 'file5'), data)
        await fsPromises.appendFile(path.join(__dirname, 'files', 'file5'), '\n\n欢迎光临')
        await fsPromises.rename(path.join(__dirname, 'files', 'file5'), path.join(__dirname, 'files', 'file5-rename'))
        const newData = await fsPromises.readFile(path.join(__dirname, 'files', 'file5-rename'))
        console.log(newData.toString())
    } catch (error) {
        console.log(error)
    }
}

fileFunc()

总结:

  • 相比回调式操作,使用async await操作会更加优雅,不会出现回调地狱
  • unlink用来删除文件

文件流操作

创建stream.js,代码如下

方式一

const fs = require('fs')

// 读取文件流
const rs = fs.createReadStream('./files/file2', { encoding: 'utf8' })
// 写入文件流
const ws = fs.createWriteStream('./files/new-file2')

// 监听读取并写入
rs.on('data', (chunk) => {
	ws.write(chunk)
})

在读取大文件时或者处理网络文件时,文件流操作很有用,在操作大文件时,我们可以设置每次读取的数据量大小,默认是64kb

方式二

const fs = require('fs')

// 读取文件流
const rs = fs.createReadStream('./files/file2', { encoding: 'utf8' })
// 写入文件流
const ws = fs.createWriteStream('./files/new-file2')

rs.pipe(ws)

pipe方法自动将读取文件流导入到写入流,相当于一个便捷操作。

操作文件夹

创建dir.js,代码如下

const fs = require('fs')

// 判断文件夹是否存在
if (!fs.existsSync('./new')) {
  	// 创建文件夹
    fs.mkdir('./new', (err) => {
        if (err) throw err
        console.log('文件夹创建成功')
    })
}

if (fs.existsSync('./new')) {
  	// 删除文件夹
    fs.rmdir('./new', (err) => {
        if (err) throw err
        console.log('文件夹删除成功')
    })
}

总结:

  • existsSync是同步方法,用来判断文件夹是否存在
  • mkdir创建文件夹
  • rmdir rrreee
  • Zusammenfassung:
  • readFile wird verwendet, um den Inhalt der Datei zu lesen. Nach erfolgreichem Lesen gibt die Rückruffunktion das Pufferformat zurück, sodass die toString()-Methode benötigt wird aufgerufen werden

  • writeFileSchreibt Inhalt in die Datei. Wenn die Datei nicht existiert, wird automatisch die Datei erstellt
  • appendFileHängt Inhalt an Ende der Datei. Wenn die Datei nicht vorhanden ist, wird sie automatisch erstellt

  • rename kann verwendet werden, um den Dateinamen zu ändern
  • path.join code> wird zum Zusammenfügen von Dateipfaden verwendet, wodurch das Problem unterschiedlicher Pfadformate in verschiedenen Betriebssystemen vermieden werden kann
  • __dirname ist eine globale Variable von node.js, der Standardwert ist das aktuelle Projektverzeichnis 🎜

    versprechen asynchronen Wartevorgang🎜🎜Erstellen Sie index-promise.js, der Code lautet wie folgt 🎜rrreee🎜 Zusammenfassung: 🎜<ul> <li> Im Vergleich zu Rückrufvorgängen ist die Verwendung von asynchronen Wartevorgängen eleganter und verursacht keine Rückrufhölle🎜</li> <li>Verwenden Sie <code>unlink, um Dateien zu löschen🎜🎜

    Datei Stream-Operation🎜🎜Erstellen Sie stream.js, der Code lautet wie folgt🎜

    1🎜rrreee🎜Datei-Stream-Operationen sind sehr nützlich, wenn Sie große Dateien lesen oder verarbeiten Beim Betrieb großer Dateien können wir die Datenmenge, die jedes Mal gelesen wird, festlegen. Der Standardwert ist 64 KB. Methode 2: pipe Importiert den gelesenen Dateistream automatisch in den Schreibstream, was einem praktischen Vorgang entspricht. 🎜

    Operationsordner 🎜🎜Erstellen Sie dir.js, der Code lautet wie folgt 🎜rrreee🎜Zusammenfassung: 🎜
    • existsSync code> ist eine Synchronisierungsmethode, die verwendet wird, um festzustellen, ob der Ordner vorhanden ist 3 Operationen Die Ordnermethode ist sehr verbreitet, genau wie das tägliche Essen. 🎜🎜Weitere Kenntnisse zum Thema Programmierung finden Sie unter: 🎜Einführung in die Programmierung🎜! ! 🎜

Das obige ist der detaillierte Inhalt vonVerstehen Sie schnell, wie Sie Dateien in NodeJS-Projekten hinzufügen, löschen, ändern und überprüfen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen