2014-10-10 73 views
2

我只是嘗試了node.js和fs包。node.js fs.readFile如何知道何時到達EOF

對於fs.readFile()中的異步IO,回調處理程序如何知道讀取程序是否已經命中EOF或僅僅耗盡了讀緩衝區大小,換出了或其他任何條件?詢問時也沒有可見的文件句柄。這是一個錯誤的節點習語嗎?

非常感謝。 迪內希

-

@Abe。所以我改變了代碼,假設我會一勞永逸地解決這個問題,但卻遇到了大文件的錯誤。但在所有其他情況下,僅僅跑了完美

"buffer.js:194 
     this.parent = new SlowBuffer(this.length); 
        ^
RangeError: length > kMaxLength 
    at new Buffer (buffer.js:194:21) 
    at fs.js:225:16 
    at Object.oncomplete (fs.js:107:15)" 
+0

我懷疑如果EOF以外的東西發生了,那麼回調裏的'err'參數就會有東西在裏面。你是否遇到過除EOF之外的事情,並且在'err'中沒有任何內容? – 2014-10-10 21:23:11

+0

@Abe,謝謝你的提示。正如我剛纔所說,我只是在學習節點,並且在使用它之前要理解這個野獸,所以我不必在週六晚上3點就發現問題。我修改了代碼,假設我一次完成整個事件並在一個測試用例中出現錯誤(已更新q) – Dinesh 2014-10-10 21:34:19

回答

4

fs.readFile()緩存文件的全部內容(讀取直到EOF)。如果讀取文件時發生錯誤,則設置參數err。否則,您將獲取文件的內容作爲回調的第二個參數。

+0

我希望節點文檔不太混亂。 Python對它更好。 – Dinesh 2014-10-11 15:04:39