Brief:
系統將加載CSV文件,但它們預計爲巨大(+ 1M行)。我已經知道如何使用隊列和後臺作業/任務來處理它們。如何知道一個文件中的行數,而不用在JavaScript中將內容加載到內存中?
但是,
我要顯示給用戶在他的文件中的進度,東西線:2165的1246875也許它的百分比。爲了將它存檔,我需要知道文件中的行數,但是我必須在不將內容加載到內存中的情況下進行操作,因此只要我上傳並且可以將文件名保存在內存中,它就可以很快。在其中找到了全部的行。
在PHP中,這是使用SplFileObject
試圖seek()
到PHP_MAX_INT
可能的,那麼它進入文件和key()
返回該行它能對最高點的連線。
但是這個系統完全是在JavaScript/Node.js中構建的,所以爲了方便起見,我想用JavaScript來構建這個系統部分。
我怎麼能做到這一點?已經看過FS API,但沒有找到如何去做到這一點。
[編輯]
想法而已:
child_process.exec
+wc -l
(僅針對Unix)- 獲得來自客戶端使用
FileReader
(代表資源給用戶)此信息
您可以讀取一些第一行,計算行的平均大小並在其上劃分文件大小。 –
有人糾正我,如果我錯了,但如果你閱讀文件異步,並沒有指定文件編碼,你只處理塊,對吧?那麼你可以計算每個塊中的換行符並讓該塊進行垃圾回收嗎? –
你不需要計數線。跟蹤已處理字節的數量並將其除以文件長度以知道已處理文件的數量。乘以100以百分比表示。 – axiac