亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用Node.js編寫文件

用Node.js編寫文件

jeck貓 2019-06-10 16:55:28
用Node.js編寫文件我一直試圖在使用Node.js時找到一種寫入文件的方法,但沒有成功。我怎么能這么做?
查看完整描述

3 回答

?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

中有很多細節文件系統API..最常見的方法是:

const fs = require('fs');fs.writeFile("/tmp/test", "Hey there!", function(err) {
    if(err) {
        return console.log(err);
    }

    console.log("The file was saved!");});


查看完整回答
反對 回復 2019-06-10
?
揚帆大魚

TA貢獻1799條經驗 獲得超9個贊

目前有三種編寫文件的方法:

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

    您需要等待回調,以確保緩沖區被寫入磁盤。沒有緩沖。

  2. fs.writeFile(filename, data, [encoding], callback)

    所有數據必須同時存儲;不能執行順序寫入。

  3. fs.createWriteStream(path, [options])

    創建WriteStream,這很方便,因為您不需要等待回調。但同樣,它沒有緩沖。

WriteStream顧名思義,是一條小溪。根據定義,流是“一個緩沖區”,它包含向一個方向移動的數據(源?目標)。但可寫流不一定是“緩沖”的。當您編寫時,流將被“緩沖”。n時間和時間n+1,流將緩沖區發送到內核(因為它已滿,需要刷新)。

換言之:“緩沖區”是對象。它是否“被緩沖”是該對象的屬性。

如果您查看代碼,WriteStream從可寫的Stream對象。如果您注意,您將看到它們如何刷新內容;它們沒有任何緩沖系統。

如果寫入字符串,則將其轉換為緩沖區,然后發送到本機層并寫入磁盤。在編寫字符串時,它們沒有填充任何緩沖區。所以,如果你這樣做了:

write("a")write("b")write("c")

你在做:

fs.write(new Buffer("a"))fs.write(new Buffer("b"))fs.write(new Buffer("c"))

那是調用I/O層。雖然您使用的是“緩沖區”,但數據并不是緩沖的。緩沖流可以:fs.write(new Buffer ("abc")),對I/O層的一個調用。

到目前為止,Node.js v0.12(公布的穩定版本為02/06/2015)現在支持兩個功能:cork()uncork()..看來,這些函數最終將允許您緩沖/刷新寫調用。

例如,在Java中有一些類提供緩沖流(BufferedOutputStreamBufferedWriter.)。如果您編寫了三個字節,這些字節將存儲在緩沖區(內存)中,而不是只執行三個字節的I/O調用。當緩沖區已滿時,內容將被刷新并保存到磁盤中。這提高了性能。

我沒有發現任何東西,只是記得應該如何進行磁盤訪問。


查看完整回答
反對 回復 2019-06-10
?
慕仙森

TA貢獻1827條經驗 獲得超8個贊

你當然可以讓它更先進一點。非阻塞,寫入零碎,而不是立即寫入整個文件:

var fs = require('fs');var stream = fs.createWriteStream("my_file.txt");stream.once('open', function(fd) {
  stream.write("My first row\n");
  stream.write("My second row\n");
  stream.end();});


查看完整回答
反對 回復 2019-06-10
  • 3 回答
  • 0 關注
  • 592 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號