我正在使用一个专有的 Java 库,该库将其数据直接保存到 java.io.File
中,但我需要能够读取数据以便直接流式传输。数据是二进制的,一些媒体文件。
java.io.File
作为参数传递给这个库,但我不知道有什么方法可以从中获取流。有没有一些简单的方法可以做到这一点,除了打开文件也用于读取和尝试同步读/写操作!?
最好我想跳过写入文件系统的部分,因为我是从小程序使用它的,在这种情况下需要额外的权限。
最佳答案
如果您的程序的一部分正在写入文件,那么您应该能够在另一个线程中使用普通的 new FileInputStream(someFile)
流从该文件中读取,尽管这取决于操作系统支持对于这样的 Action 。你不需要同步任何东西。现在,您受制于输出流以及程序的写入部分调用 flush()
的频率,因此可能会有延迟。
这是一个 little test program我写的证明它工作正常。阅读部分只是在一个循环中,看起来像这样:
FileInputStream input = new FileInputStream(file);
while (!Thread.currentThread().isInterrupted()) {
byte[] bytes = new byte[1024];
int readN = input.read(bytes);
if (readN > 0) {
byte[] sub = ArrayUtils.subarray(bytes, 0, readN);
System.out.print("Read: " + Arrays.toString(sub) + "\n");
}
Thread.sleep(100);
}
关于java - 在写入文件时从文件中读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7912307/