概览
- 线程 1 尝试将一些数据连续写入文件
- 线程 2 尝试连续读取同一个文件以解析和处理数据(只读)
问题:
- 在线程 2 中,文件大小保持不变(这不会刷新,因为线程 1 尝试将数据写入文件)因此,我无法解析超出初始文件大小的文件。
尝试过的东西
- FileInputStream:尝试从输入流中读取,文件大小保持恒定值(122924 字节)并且永远不会增加
- RandomAccessFile:结果同上,文件大小保持不变(122924 字节),尝试了 r/rw 模式
- FileChannel:尝试在来自 FileInputStream 的 Channel 上工作,结果与上面相同
最佳答案
您在写入或读取文件时需要锁定。这样只有一个线程可以访问该文件。
这是解释锁的官方android网站:
http://developer.android.com/reference/java/util/concurrent/locks/Lock.html
这是一个使用锁的例子:
https://stackoverflow.com/a/3392615/2767703
你也可以使用synchronized来锁定一个对象,这里解释一下:
关于android - 在写入文件时读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23824307/