国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Node.js學(xué)習(xí)之路05——fs文件系統(tǒng)之文件的寫入和讀取

leanote / 3496人閱讀

fs文件系統(tǒng)
Node.js中,提供一個fs模塊,以實現(xiàn)文件及目錄的讀寫操作。
1. 同步和異步方法
一般來講,讀取文件使用異步的方法,但是在讀取例如系統(tǒng)配置文件時,應(yīng)該使用同步的方法
2. 普通文件寫入和讀取 2.1 文件寫入 2.1.1 寫入一個基本的文本文件

如果不存在要寫入的文件,那么將會自動創(chuàng)建一個文件

const fs = require("fs");
let writeData = "The engaged couple will appear for a photo outside Kensington Palace on Monday afternoon, and will take part in a broadcast interview in the evening.";
fs.writeFile("./writeFile.txt", writeData, "utf-8", function (err) {
    if (err) {
        console.log("there are some wrong happened~");
    } else {
        console.log("Write successfully~~");
    }
});
2.1.2 復(fù)制圖片及各種二進(jìn)制文件(以圖片文件為例)

當(dāng)前文件夾下有一個fileImage.jpg的圖片文件

const fs = require("fs");
fs.readFile("./fileImage.jpg", "base64", function (err, data) {
    if (err) {
        console.log("讀取圖片失敗,請檢查錯誤");
    } else {
        fs.writeFile("./fileImageCopy.jpg", data, "base64", function (err) {
            if (err) {
                console.log("復(fù)制圖片文件失敗");
            } else {
                console.log("復(fù)制圖片文件成功");
            }
        });
    }
});
2.2 文件讀取 2.2.1 文件異步讀取
當(dāng)前目錄下有一個readFile.txt文件,文件的內(nèi)容是hello, this is a read file txt.
const fs = require("fs");
fs.readFile("./readFile.txt", "utf-8", function(err, data){
    if (err) {
        console.log("read file wrong", err);
    } else {
        console.log("dataAsync");
        console.log(data);
    }
});
/**
 * dataAsync
 * hello, this is a read file txt.
 * **/
2.2.2 文件同步讀取
const fs = require("fs");
let dataSync = fs.readFileSync("./readFile.txt", "utf-8");
console.log("dataSync");
console.log(dataSync);
/**
 * dataSync
 * hello, this is a read file txt.
 * **/
3. 追加數(shù)據(jù) 3.1 對文本文件同步追加數(shù)據(jù)
const fs = require("fs");
const appendFileContent = "this is appendFileContent box";
fs.appendFileSync("./appendFile.txt", appendFileContent, "utf-8");
3.2 對文本文件異步追加數(shù)據(jù)

appendFile.txt原本內(nèi)容

hello, this a basic append txt file.

-
const fs = require("fs");
const appendFileContent = "this is appendFileContent box";
fs.appendFile("./appendFile.txt", appendFileContent, "utf-8", function (err) {
    if (err) {
        console.log("追加文件操作失敗");
    } else {
        fs.readFile("./appendFile.txt", "utf-8", function (err, data) {
            if (err) {
                console.log("追加成功,但是讀取失敗");
            } else {
                console.log("追加成功,讀取操作成功");
                console.log(data);
            }
        });
    }
});
/**
* 追加成功,讀取操作成功
* hello, this a basic append txt file.
* 
* -this is appendFileContent box 
* **/
4. 文件的打開和關(guān)閉
fd代表打開文件時返回的文件描述符,在windows操作系統(tǒng)中,文件描述符也稱為文件句柄。
4.1 異步打開文件
const fs = require("fs");
fs.open("./openFile.txt", "r", (err, fd) => {
    if (err) {
        console.log("open file wrong", err);
    } else {
        console.log("open");
        console.log(fd);
    }
});
/**
* open
* 3
* **/
4.2 同步打開文件
const fs = require("fs");
let openSync = fs.openSync("./openFile.txt", "r");
console.log("openSync");
console.log(fd);
fs.clodeSync(fd); // 同步關(guān)閉文件
/**
* openSync
* 3
* **/
5. fsfs.writefs.read

在使用write方法或者writeSync方法在文件中寫入數(shù)據(jù)時

操作系統(tǒng)的做法是首先將該部分?jǐn)?shù)據(jù)讀取到內(nèi)存中,再把數(shù)據(jù)寫到文件中

當(dāng)數(shù)據(jù)讀取完畢時不代表數(shù)據(jù)已經(jīng)寫完,因為還有一步部分可能會留在內(nèi)存緩沖區(qū)中.

這時候如果調(diào)用close或者closeSync方法關(guān)閉文件,那么這部分?jǐn)?shù)據(jù)就會丟失,

這時候就可以采用fs模塊中的fsync方法對文件進(jìn)行同步操作,即將內(nèi)存緩沖區(qū)中的剩余數(shù)據(jù)全部寫入文件.

5.1 文件寫入

當(dāng)前目錄下有一個write.txt文件,文件的內(nèi)容是我喜歡編程

5.1.1 異步寫入

更加底層的一種寫入方法,可以從指定位置寫入數(shù)據(jù)

fs.write寫入,需要先打開文件,根據(jù)文件資源句柄,寫入內(nèi)容

fs.write(fd, buffer, offset, length, position, callback(err, written, buffer))

const fs = require("fs");
let buf = new Buffer("我喜歡編程");
fs.open("./write.txt", "w", function (err, fd) {
    if (err) {
        console.log("open file wrong", err);
    } else {
        fs.write(fd, buf, 3, 9, 0, function (err, written, buffer) {
            if (err) {
                console.log("寫文件操作失敗");
            } else {
                console.log("寫文件操作成功");
                console.log(buffer.toString());
            }
        });
    }
});
/**
 * 寫文件操作成功
 * 我喜歡編程
 * **/
5.1.2 同步寫入

fs.writeSync(fd, buffer, offset, length, position)

const fs = require("fs");
let buf = new Buffer("我喜歡編程");
fs.open("./write.txt", "w", function (err, fd) {
    if (err) {
        console.log("open file wrong", err);
    } else {
        fs.writeSync(fd, buf, 3, 9, 0);
    }
});
5.2 文件讀取

當(dāng)前目錄下有一個open.txt文件,文件的內(nèi)容是我喜歡編程

5.2.1 同步讀取

fs.readSync(fd, buffer, offset, length, position, callback)

const fs = require("fs");
 fs.open("./open.txt", "r", function(err, fd){
    var buf = new Buffer(255).fill(0);
    var bytesRead = fs.readSync(fd, buf, 0, 9, 3);
    console.log(bytesRead);//9
    console.log(buf.slice(0, bytesRead).toString());//喜歡編
});
5.2.2 異步讀取

fs.read(fd, buffer, offset, length, position, callback(err,bytesRead, buffer))

const fs = require("fs");
fs.open("./open.txt", "r", function (err, fd) {
    let buf = new Buffer(255).fill(0);//緩存區(qū)
    fs.read(fd, buf, 0, 9, 3, function (err, bytesRead, buffer) {
        console.log(buffer.slice(0, bytesRead).toString());//喜歡編
    });
});

fs.open("./open.txt", "r", function (err, fd) {
    let buf = new Buffer(255).fill(0);//緩存區(qū)
    fs.read(fd, buf, 0, 9, 3, function (err, bytesRead, buffer) {
        console.log(buffer.slice(0, bytesRead).toString());//喜歡編
        fs.read(fd, buf, 0, 3, null, function (err, bytesRead, buffer) {
            console.log(buffer.slice(0, bytesRead).toString());//程
        });
    });
});

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/107593.html

相關(guān)文章

  • Node.js學(xué)習(xí)08——fs文件系統(tǒng)stream流基本介紹

    摘要:中各種用于讀取數(shù)據(jù)的對象對象描述用于讀取文件代表客戶端請求或服務(wù)器端響應(yīng)代表一個端口對象用于創(chuàng)建子進(jìn)程的標(biāo)準(zhǔn)輸出流。如果子進(jìn)程和父進(jìn)程共享輸入輸出流,則子進(jìn)程的標(biāo)準(zhǔn)輸出流被廢棄用于創(chuàng)建子進(jìn)程的標(biāo)準(zhǔn)錯誤輸出流。 9. stream流 fs模塊中集中文件讀寫方法的區(qū)別 用途 使用異步方式 使用同步方式 將文件完整讀入緩存區(qū) readFile readFileSync 將文件部...

    BoYang 評論0 收藏0
  • Node.js學(xué)習(xí)06——fs文件系統(tǒng)目錄操作與文件信息

    6. 目錄操作 6.1 創(chuàng)建目錄 如果存在該目錄,就創(chuàng)建失敗 同步創(chuàng)建目錄fs.mkdirSync(path, [mode]) const fs = require(fs); let mkdir = ./mkdir; fs.mkdir(mkdir, (err) => { if (err) { console.log(`mkdir ${mkdir} file faile...

    用戶83 評論0 收藏0
  • Node.js學(xué)習(xí)14——Process進(jìn)程

    摘要:在中,只支持單線程。在這種場合下,如果能夠使用多進(jìn)程,則可以為每個請求分配一個進(jìn)程,從而可以更好地使用服務(wù)器端的資源。進(jìn)程進(jìn)程對象的屬性用于運行應(yīng)用程序的可執(zhí)行文件的絕對路徑的版本號及其各依賴的版本號當(dāng)前運行的平臺用于讀入標(biāo)準(zhǔn)輸入流的對象。 Process 在Node.js中,只支持單線程。但是在應(yīng)用程序中,如果只使用單線程進(jìn)行操作,從接收請求開始到返回響應(yīng)為止的這段時間內(nèi)可能存在很長...

    darry 評論0 收藏0
  • Node.js學(xué)習(xí)07——fs文件系統(tǒng)文件或目錄執(zhí)行其他操作

    摘要:如果打開一個文件的符號鏈接文件進(jìn)行編輯,操作系統(tǒng)將自動打開符號鏈接中所指向的原文件進(jìn)行編輯,如果打開一個目錄的符號鏈接文件進(jìn)行文件的操作編輯或刪除操作,則操作系統(tǒng)將西東打開符號鏈接中所指向的原目錄并執(zhí)行相應(yīng)的操作。 8. 對文件或目錄執(zhí)行的其他操作 8.1 修改文件名字或移動文件目錄fs.rename fs.rename(oldPath, newPath, callback(err...

    lordharrd 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<