0
我有一個由空文件組成的目錄,我想遍歷它們的每個名稱。但是,我有將近2000萬個這樣的空文件,並將它們全部加載到內存中,並且使用fs.readdir
或fs.readdirSync
都會花費不必要的時間,吞噬系統中的所有內存。NodeJS通過文件讀取巨大的目錄文件
這將是什麼方法呢?
理想我想尋找的東西,以異步方式由文件中讀取文件的代碼,將ressemble如下:
readdirfilebyfile((filename)=>{....})
,這樣在任何時候,我會保留文件的完整列表在內存中。
我正在使用的當前解決方案是將所有文件名轉儲到單個文件中,然後我將其作爲數據流讀取。但是,這只是逃避了一個問題,我應該知道如何解決而不訴諸於此。
重複? https://stackoverflow.com/questions/25757293/how-to-stream-read-directory-in-node-js還有https://groups.google.com/forum/#!topic/nodejs/t0ziBVsPRqw那裏至少在第二環節是一些間接的解決方案。我認爲純粹在node.js中沒有直接的解決方案。但是,在鏈接的SO線程中的答案表明這沒有問題(他嘗試過),你只需確保不一次開始處理它們,只要閱讀那個大列表似乎沒問題。好的 - 如果我使用他的計算作爲你的場景的基礎,600 MB的內存.... –
@Mörre我剛剛提出了這個問題,因爲OP沒有得到一個功能的答案。答案仍然想要將所有文件名讀入內存。我希望通過訪問一個'n'文件而不需要讀取之前或之後的文件。 –
你想完成什麼?你想對這些文件名執行什麼操作? – robertklep