簡體   English   中英

當其他線程讀取文件時,如何修改文件?

[英]How can I modify a file while other threads read from it?

我正在將數據多線程(讀和寫)到單個文本文件中或從單個文本文件中多線程化。 我需要能夠在替換實際文件的情況下替換或刪除此文件中的文本。

我不能簡單地將.read()轉換為字符串,然后將.write()為具有相同名稱的新文件,因為其他線程仍在使用該文件。 我無法將.write()放入另一個文件中,因為線程需要從單個文件中.read()

這可能嗎?

是否有等效於file.replace()file.remove()file.delete()

餿主意。 使用唯一負責寫入/讀取文件的另一個線程。 如果文件太大,也可以將其讀入內存。

當然可以,但是只有在您以統一的方式讀/寫文件時,它才有用。 當我說統一時,您應該將文件視為數據塊。 就像說,每個4096字節是一個塊,您可以在每個塊上執行所需的操作。 如果您不這樣做,則必須跟蹤數據位置的偏移量,這將使程序更難管理。

之后,您可以將隨機訪問功能用於文件I / O。 有諸如seek()的功能可移動到文件中的其他偏移量,並通過tell()告知當前的偏移量。 然后,您可以從當前位置讀取或寫入。 就像記憶一樣思考它,因為基本上就是它了。

我不確定您要問的是file.remove()file.replace()file.delete()函數的存在或其對您的工作有何幫助。 它達不到目的。

另請閱讀有關“ 讀者-作家”問題的更多信息,以了解如何進行同步。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM