我在单个文本文件中多路读取数据(读取和写入)。 我需要能够替换或删除此文件中的文本,而无需替换实际文件。
我不能简单地.read()
成一个字符串,然后.write()
一个具有相同名称的新文件,因为其他线程仍在使用该文件。我无法.write()
进入另一个文件,因为线程需要{em>单个文件中的.read()
。
这可能吗?
是否有等同于file.replace()
或file.remove()
或file.delete()
的内容?
答案 0 :(得分:2)
糟糕的主意。使用另一个独立负责写入/读入文件的线程。或者如果文件不是太大,请将文件读入内存。
答案 1 :(得分:1)
当然可以,但可能只有在您以统一的方式读取/写入文件时才有用。当我说制服时,你应该将文件视为数据块。比方说,每4096个字节就是一个块,你可以在每个块上做你需要的。如果你不这样做,那么你必须跟踪数据的偏移量,并使你的程序更难管理。
之后,您可以使用文件I / O的随机访问功能。像seek()
这样的函数可以移动到文件中的不同偏移量,tell()
可以告诉当前偏移量。然后,您可以从当前位置读取或写入。想想它就像你会记忆,因为它基本上就是它。
我不确定您对file.remove()
,file.replace()
,file.delete()
函数的存在或者它对您正在做什么的帮助。它违背了目的。
另请阅读有关Readers-writers problem的更多信息,以了解如何同步此内容。