Heim > Web-Frontend > js-Tutorial > Hauptteil

Zusammenfassung der Verwendung lokaler Dateioperationen in Node.js program_node.js

WBOY
Freigeben: 2016-05-16 15:11:48
Original
1545 Leute haben es durchsucht

Worauf Node am meisten stolz ist, ist, dass es einen sehr kleinen Kern hat. Während einige Sprachen über vollständige POSIX-API-Bindungen verfügen, implementiert Node so wenige Bindungen wie möglich und stellt sie über synchrone, asynchrone oder Streaming-APIs bereit.

Dieser Ansatz bedeutet, dass es einige sehr praktische Funktionen im Betriebssystem gibt, die in Node neu erstellt werden müssen. Dies ist ein praktisches Tutorial, das Ihnen die Verwendung von Dateisystempaketen beibringt.


Dateien zitieren
Bei der Interaktion mit dem Dateisystem ist es wichtig, auf die richtige Datei zu verweisen. Da NPM-Pakete relative Pfadverweise verwenden, können Sie den Pfad nicht fest codieren. Es gibt zwei Hauptmethoden, um sicherzustellen, dass Pakete auf die richtigen Dateien verweisen:

// 使用 `path.join()` 而不是 `+` 确保Windows也能正常工作
const path = require('path')

// 找到基于调用点的相对路径,对于命令行程序(CLI applications)非常实用
path.join(process.cwd(), 'my-dynamic-file')
// 或者
path.resolve('my-dynamic-file')

// 基于一个文件找到另外一个文件
path.join(__dirname, 'my-package-file')

Nach dem Login kopieren


Datei lesen
Der einfachste Weg, Dateien asynchron im Knoten zu lesen, ist die Verwendung von Streams! Hier ist ein Beispiel:

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

// read a file and pipe it to the console
fs.createReadStream(path.join(__dirname, 'my-file'))
 .pipe(process.stdout)

Nach dem Login kopieren

Datei erstellen
Das Erstellen von Dateien ist nicht schwierig. Hier ist ein im Knoten implementierter Cat-Befehl:

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

// cat ./my-file > ./my-other-file
fs.createReadStream(path.join(__dirname, 'my-file'))
 .pipe(fs.createWriteStream(path.join(__dirname, './my-other-file')))

Nach dem Login kopieren

Dateien löschen
Dateien und Verzeichnisse, die in Shell-Skripten gelöscht werden, verwenden normalerweise den Befehl rm-rf. Ein Rimraf in NodeJS implementiert ebenfalls dieselbe Funktion:

const rimraf = require('rimraf')
const path = require('path')

rimraf(path.join(__dirname, './my-directory'), err => {
 if (err) throw err
})

Nach dem Login kopieren


Verzeichnis erstellen
Das Erstellen und Löschen von Dateien ist mit dem mkdirp-Paket sehr ähnlich

const mkdirp = require('mkdirp')
const path = require('path')

mkdirp(path.join(__dirname, 'foo/bar'), err => {
 if (err) throw err
})

Nach dem Login kopieren

Dateien suchen
Verwenden Sie readdirp, um Dateien im aktuellen Verzeichnis zu finden:

const readdirp = require('readdirp')
const json = require('JSONStream')
const path = require('path')

// recursively print out all files in all subdirectories
// to the command line. The object stream must be
// stringified before being passed to `stdout`.
readdirp({ root: path.join(__dirname) })
 .pipe(json.stringify())
 .pipe(process.stdout)

Nach dem Login kopieren


Verwenden Sie findup, um Dateien im aktuellen übergeordneten Verzeichnis zu finden:

const findup = require('findup')
const path = require('path')

// recurse up all files relative to __dirname and find
// all `package.json` files.
findup(path.join(__dirname), 'package.json', (err, res) => {
 if (err) throw err
 console.log('dir is: ' + res)
})

Nach dem Login kopieren


Über Rohre

Es ist sehr nützlich, Fehler des gesamten Datenflusses einmal in der Pipeline zu behandeln. Anstatt .on('error', cb) für jeden einzelnen Datenstrom zu verwenden:

const pump = require('pump')
const fs = require('fs')

// oh no, no errors are handled!
fs.createReadStream('./in.file').pipe(fs.createWriteStream('./out.file'))

// that's better, we're handing errors now
const rs = fs.createReadStream('./in.file')
const ws = fs.createWriteStream('./out.file')
pump(rs, ws, err => {
 if (err) throw err
})
Nach dem Login kopieren


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage