亚洲免费乱码视频,日韩 欧美 国产 动漫 一区,97在线观看免费视频播国产,中文字幕亚洲图片

      1. <legend id="ppnor"></legend>

      2. 
        
        <sup id="ppnor"><input id="ppnor"></input></sup>
        <s id="ppnor"></s>

        Node.js程序中的本地文件操作用法小結(jié)

        字號:


            Node最引以為傲的就是它有一個非常小的核心。有一些語言綁定了完整的POSIX API,而 Node實現(xiàn)了盡可能少的綁定,并通過同步、異步或流API形式暴露他們。
            這種方法意味著,操作系統(tǒng)中有一些非常方便的功能,需要在Node中重建。這是一個教你如何使用文件系統(tǒng)軟件包的實用教程。
            引用文件
            與文件系統(tǒng)的交互很重要的一點是要指向正確的文件。由于NPM的包使用相對路徑引用,所以你不能把路徑寫死在代碼。有兩個主要方式來以確保包能引用到正確的文件:
            // 使用 `path.join()` 而不是 `+` 確保Windows也能正常工作
            const path = require('path')
            // 找到基于調(diào)用點的相對路徑,對于命令行程序(CLI applications)非常實用
            path.join(process.cwd(), 'my-dynamic-file')
            // 或者
            path.resolve('my-dynamic-file')
            // 基于一個文件找到另外一個文件
            path.join(__dirname, 'my-package-file')
            讀取文件
            在節(jié)點中的異步讀取文件的最簡單方法就是使用流!下面是一個例子:
            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)
            創(chuàng)建文件
            創(chuàng)建文件也并不是很難,這里有一個用node實現(xiàn)的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')))
            刪除文件
            在Shell腳本中刪除的文件和目錄通常使用 rm-rf 命令。NodeJS中一個 rimraf 也實現(xiàn)了相同的功能:
            const rimraf = require('rimraf')
            const path = require('path')
            rimraf(path.join(__dirname, './my-directory'), err => {
             if (err) throw err
            })
            創(chuàng)建目錄
            創(chuàng)建跟刪除文件很相似,使用 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)
            })
            關(guān)于管道(pipes)
            在管道中對整個數(shù)據(jù)流的錯誤進行一次處理非常。而不用對每個單獨的數(shù)據(jù)流使用 .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
            })