我有10個文本文件(名爲file0.txt到file9.txt)具有任意長度和行數。我需要隨機選擇一個文件,隨機訪問該文件中的1-3行,處理它們並重復,直到所有文件的所有行都被處理完畢。這隻需要做一次。爲了這個問題,讓我們說「過程」意味着打印行。有沒有人有任何建議,我怎麼能做到這一點,而不需要加載所有的文本文件到內存中?C++ - 隨機訪問幾個文本文件的行
回答
在文本文件中,沒有任何方法可以「隨機訪問」(因爲您可以隨機訪問矢量)行,因爲找到行的唯一方法就是線性搜索文件以找到換行符。這意味着即使您沒有將它們全部加載到內存中,您至少也需要通過一次文件流來訪問行。
您可以通過傳遞所有文件一次來計算其中的行數,然後再次傳遞它們以抽出隨機選擇的行,從而實現所描述的內容。我不確定這會有什麼好處。你真的想達到什麼目的?
我猜這是一個家庭作業問題 - 對於現實生活問題來說太奇怪了。 – JBentley
你說得對,它是UDP模擬項目的一部分。 –
你可以掃描一個文件到索引的起始位置,並將其保存在內存中(或者如果你需要多次執行同一個文件,甚至可以堅持)。 一旦你有了,你可以尋找到開始的行,只是在處理之前閱讀它直到換行/ eof。
建議:
1 /製作這些文件的副本 2 /擦除時,它讀取線 3 /更新版本號文件 存在這樣,你隨機挑選一條線,這是一個線尚未閱讀。
很多讀/寫...效率不高
而不是隻是投下一票,你能否提高一點生產力,並解釋你爲什麼不同意。我在這裏分享想法,我明白如果他們並不總是很棒,那麼請解釋一下爲什麼你可能會不同意 – vincentB
- 1. 「隨機」訪問C#中的大文件
- 2. C++中的隨機訪問文件
- 3. 隨機訪問gzip文件?
- 4. 隨機訪問文件
- 5. 訪問C中隨機目錄中的隨機文件#
- 6. 嘲笑一個隨機訪問文件
- 7. 從C++中的隨機訪問文件讀取訪問衝突
- 8. 使用隨機訪問文件的EOFException
- 9. J2ME中的文件隨機訪問
- 10. 得到的文本文件隨機行
- 11. Java的定長隨機訪問文件
- 12. 隨機訪問文件的Java
- 13. PHP中的隨機訪問文件
- 14. 閱讀隨機訪問文件
- 15. Java隨機訪問文件輸入流
- 16. 隨機訪問加密文件
- 17. .net文件隨機訪問recoard鎖定
- 18. 讓幾個程序集訪問相同的文本文件
- 19. 隨機訪問多個文件和文件緩存
- 20. 隨機訪問文件visual basic 2012
- 21. 覆蓋隨機訪問文件
- 22. Android應用隨機訪問文件apk
- 23. 隨機訪問文件FileLock:java.io vs. java.nio
- 24. 使用隨機訪問文件Java中
- 25. 刪除隨機訪問文件Java中
- 26. 附加隨機訪問文件
- 27. 隨機訪問文件如何工作
- 28. 隨機訪問圖像(圖片)文件
- 29. Avro hadoop隨機訪問文件
- 30. 隨機選擇從一個文件的幾行,然後從第二個文件
顯示您嘗試過的。 –
爲什麼不將它們加載到內存中?他們太大了嗎? – Barmar
如果你想處理或打印文件中的所有行,那麼爲什麼你不想加載內存中的所有文件?你可以加載一個文件然後關閉它,但爲此你需要跟蹤你已經處理的所有行 – Abk