ホームページ  >  記事  >  ウェブフロントエンド  >  Node.js でのローカル ファイル操作の使用法の概要 Program_node.js

Node.js でのローカル ファイル操作の使用法の概要 Program_node.js

WBOY
WBOYオリジナル
2016-05-16 15:11:481532ブラウズ

Node が最も誇りに思っているのは、非常に小さなコアを備えていることです。一部の言語には完全な POSIX API バインディングがありますが、Node はできる限り少ないバインディングを実装し、同期 API、非同期 API、またはストリーミング API を通じて公開します。

このアプローチは、Node で再構築する必要がある非常に便利な機能がオペレーティング システムにいくつかあることを意味します。これは、ファイル システム パッケージの使用方法を説明する実践的なチュートリアルです。


ファイルの引用
ファイル システムを操作するときは、正しいファイルを指定することが重要です。 NPM パッケージは相対パス参照を使用するため、パスをハードコーディングすることはできません。パッケージが正しいファイルを参照していることを確認するには、主に 2 つの方法があります:

// 使用 `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')


ファイルを読み取る
ノードでファイルを非同期に読み取る最も簡単な方法は、ストリームを使用することです。以下に例を示します:

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)

ファイルの作成
ファイルの作成は難しくありません。ノードに実装された cat コマンドは次のとおりです。

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')))

ファイルを削除
シェル スクリプトで削除されるファイルとディレクトリは、通常、rm-rf コマンドを使用します。 NodeJS のrimraf も同じ関数を実装します:

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

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


ディレクトリを作成します
ファイルの作成と削除は、mkdirp パッケージを使用することで非常に似ています

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

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

ファイルを検索
readdirp を使用して現在のディレクトリ内のファイルを検索します:

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)


findup を使用して、現在の親ディレクトリ内のファイルを検索します:

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)
})


パイプについて

データ フロー全体のエラーをパイプラインで一度処理すると非常に便利です。個々のデータ ストリームごとに .on('error', cb) を使用する代わりに:

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
})


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。