android - 在写入文件时读取文件

标签 android multithreading android-file

概览

  • 线程 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来锁定一个对象,这里解释一下:

Java Synchronization

关于android - 在写入文件时读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23824307/

相关文章:

multithreading - QObject::killTimer:计时器不能从另一个线程停止

java - Java 中的线程池执行器

c - 使用多线程时如何检测数据丢失的位置

Android保存文件到缓存目录

Android 保存文件权限被拒绝

java - 如何让方法在返回值之前等待监听器的结果?

android - 缩小时 OSMDroid 崩溃

java - 接收或重新发送android收到的广播

java - MPAndroidChart v3.1.0 在 github 上找不到

java - Android:可绘制图像作为字符串中 img 标签的 src