nodejs讀取本地文件并重新寫入

  1. 創(chuàng)建項目文件夾 nr,并進入該文件夾
mkdir nr
cd nr
  1. 用npm初始化一個node項目
npm init

初始化需要填寫項目名稱、版本號、描述等。如果想使用默認值,直接回車就可。
初始化后,nr 項目內(nèi)容會生成 package.json 文件。

  1. 按照我們需要用的 fs 、path 模塊
npm add fs path

安裝完后生成 node_modules,里面有剛才按照的模塊,以及這個兩個模塊依賴的相關(guān)插件。

  1. 根目錄下創(chuàng)建一個準備一個 json 文件, nr_data.json
[{"create_time":"2013-06-06 00:34:20","upload_time":"2013-06-06 20:34:20","vid":{"Fmv_id":"274430","Fstatus":"1","Fvid":"u00138j4hcs"}}]

注意,數(shù)據(jù)必須是標(biāo)準的 json 格式。

  1. 根目錄下創(chuàng)建一個處理我們想要的數(shù)據(jù)的文件 nr_util.js
  1. 跟目錄下用node命令執(zhí)行該文件,就能得到想要的數(shù)據(jù)格式。
node nr_util.js



node數(shù)據(jù)的讀寫可以用 readFile & writeFile
createReadStream & createWriteStream
它們的區(qū)別是 fs.readFile() 函數(shù)會緩沖整個文件。 若要最小化內(nèi)存成本,則盡可能選擇流式,使用 fs.createReadStream()。

nr_util.js

readFile & writeFile方法讀?。?/p>

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

const realFile = path.resolve(__dirname, './nr_data.json')
const wrideFile = path.resolve(__dirname, './nr_data_formated.json')

fs.readFile(realFile , (err, buffer) => {
  if (err) console.error(err)

  let d = buffer.toString() //將二進制的數(shù)據(jù)轉(zhuǎn)換為字符串
  d = JSON.parse(d) //將字符串轉(zhuǎn)換為json對象

  let fomatted = d.map(e => e.vid)

  console.log("fomatted:", fomatted)

  // fs.writeFile 寫入的 data 可以是字符串或 buffer
  // const data = new Uint8Array(Buffer.from(fomatted)) 或
  const data = JSON.stringify(fomatted)

  fs.writeFile(wrideFile, data, (err) => {
    if (err) console.error(err);
    console.log('------ dwon -------');
  })
})

createReadStream & createWriteStream 方法讀取:

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

var stream = fs.createReadStream(path.resolve(__dirname, './nr_data.json'))
var out = fs.createWriteStream(path.resolve(__dirname, './nr_data_formated.json'))

stream.on('data', function (buffer) {
  var d = buffer.toString() //將二進制的數(shù)據(jù)轉(zhuǎn)換為字符串
  d = JSON.parse(d) //將字符串轉(zhuǎn)換為json對象

  let fomatted = d.map(e => e.vid)

  console.log("fomatted:", fomatted)

  //寫入文件只認識字符串或者二進制數(shù),所以把json對象轉(zhuǎn)換成字符串重新寫入json文件中
  var data = JSON.stringify(fomatted)

  out.write(data)
})

out.on('open', function (fd) {
  console.log('需要被寫入的文件已打開');
})

stream.on('end', function () {
  //將操作系統(tǒng)緩存區(qū)中的數(shù)據(jù)全部寫入文件
  out.end(function () {
    console.log('文件全部寫入完畢');
    console.log('共寫入' + out.bytesWritten + '數(shù)據(jù)');
  })
})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容