在写入文件时读取文件

时间:2014-05-23 08:22:41

标签: android multithreading android-file

概述

  • 主题1 尝试将某些数据连续写入文件
  • 线程2 尝试连续读取同一文件以解析和处理数据(只读)

问题:

  • 在线程2中,文件大小保持不变(这不会因为线程1尝试将数据写入文件而刷新),因此,我无法解析超出初始文件大小。

尝试过的事情

  • FileInputStream:尝试从输入流中读取,文件大小保持不变(122924字节)且永不增加
  • RandomAccessFile:与上面结果相同,文件大小保持不变(122924字节),试过r / rw模式
  • FileChannel:尝试从FileInputStream处理频道,结果与上面相同

1 个答案:

答案 0 :(得分:1)

您需要在写入或读取文件时锁定。这样只有一个线程可以访问该文件。

以下是解释锁定的官方android网站:

http://developer.android.com/reference/java/util/concurrent/locks/Lock.html

以下是使用锁的示例:

https://stackoverflow.com/a/3392615/2767703

你也可以使用synchronized来锁定一个对象,这里解释一下:

Java Synchronization