>  기사  >  웹 프론트엔드  >  Node.js의 로컬 파일 작업 사용법 요약 program_node.js

Node.js의 로컬 파일 작업 사용법 요약 program_node.js

WBOY
WBOY원래의
2016-05-16 15:11:481535검색

Node의 가장 자랑스러운 점은 매우 작은 코어를 가지고 있다는 점입니다. 일부 언어에는 전체 POSIX API 바인딩이 있지만 Node는 가능한 한 적은 바인딩을 구현하고 동기, 비동기 또는 스트리밍 API를 통해 노출합니다.

이러한 접근 방식은 운영 체제에 Node.js에서 다시 빌드해야 하는 몇 가지 매우 편리한 기능이 있음을 의미합니다. 이것은 파일 시스템 패키지를 사용하는 방법을 알려주는 실용적인 튜토리얼입니다.


파일 인용
파일 시스템과 상호작용할 때 올바른 파일을 가리키는 것이 중요합니다. NPM 패키지는 상대 경로 참조를 사용하므로 경로를 하드 코딩할 수 없습니다. 패키지가 올바른 파일을 참조하는지 확인하는 두 가지 주요 방법이 있습니다.

// 使用 `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으로 문의하세요.