- 創(chuàng)建項目文件夾 nr,并進入該文件夾
mkdir nr
cd nr
- 用npm初始化一個node項目
npm init
初始化需要填寫項目名稱、版本號、描述等。如果想使用默認值,直接回車就可。
初始化后,nr 項目內(nèi)容會生成 package.json 文件。
- 按照我們需要用的
fs、path模塊
npm add fs path
安裝完后生成 node_modules,里面有剛才按照的模塊,以及這個兩個模塊依賴的相關(guān)插件。


- 根目錄下創(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 格式。
- 根目錄下創(chuàng)建一個處理我們想要的數(shù)據(jù)的文件
nr_util.js:
- 跟目錄下用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ù)');
})
})
