1. 程式人生 > >node學習(三) ——讀寫檔案

node學習(三) ——讀寫檔案

 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);

 

找到了一個比較全的文章  推薦一下:

https://www.cnblogs.com/wushanbao/p/7003308.html