node學習(三) ——讀寫檔案
阿新 • • 發佈:2019-01-11
1.寫檔案的一個簡單操作,node 提供了很多api 我這裡就用簡單的writeFIle 和appendFile(僅供參考)
1.寫檔案的一個簡單操作 這裡他提供了很多個api 我是用的writeFile和appendFile(僅供參考) const fs = require('fs'); const path = require('path'); async function getIsExist() { let isExist = false; await fs.exists(url, function (exists) { isExist = exists; }); return isExist; } function writeTxtToFile(str, url) { if (!getIsExist()) { //非同步方法 fs.writeFile(url, '初始化第一行', function (err) { if (err) { console.log('寫檔案操作失敗'); } else { console.log('寫檔案操作成功'); } }); } else { let time = new Date().getTime(); let date = formatDate(time); fs.appendFile(url, str+': '+ date + ' 這是追加的資料'+'\n' , function (err) { if (err) { console.log('追加內容失敗'); } else { console.log('已追加一行'); } }) } } function formatDate(time, formatStr) { let date = new Date(time); let Y = date.getFullYear(); let M = (date.getMonth() + 1) < 10 ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1); let D = date.getDate() < 10 ? '0' + (date.getDate()) : data.getDate(); let h = date.getHours(); let m = date.getMinutes(); let s = date.getSeconds(); formatStr = formatStr || 'YYYY-MM-DD H:m:s'; return formatStr.replace(/YYYY|MM|DD|H|m|s/ig, function (matches) { return ({ YYYY: Y, MM: M, DD: D, H: h, m: m, s: s })[matches]; }); } let url = './message.txt'; function circ(index) { writeTxtToFile(index, url); setTimeout(function () { circ(++index); }, 5000); } circ(1);
2.讀檔案的操作 同步和非同步 以及檔案流(寫檔案也有,就不多說啦,這裡就用一下簡單的讀取api)
let fs = require('fs'); //讀取指定檔案中的使用者資訊 let url = './user.txt'; function getUserInfoForFile(url) { //非同步的形式讀取 fs.readFile(url, { flag: 'r', encoding: 'utf-8' }, function (err, data) { if (err) { console.log(err); } else { console.log('非同步', data); } }); //同步的形式讀取 let str = fs.readFileSync(url, {encoding: 'utf-8'}); let strArr = str.split('\r\n'); let info = {}; for (let i = 0; i < strArr.length; i++) { let objArr = strArr[i].split(':'); info[objArr[0]] = objArr[1]; } return info; } let userInfo = getUserInfoForFile(url); console.log('userInfo',userInfo);
找到了一個比較全的文章 推薦一下: