java - 在写入文件时从文件中读取数据

标签 java file stream

我正在使用一个专有的 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/

相关文章:

java - 从 Java 调用 Windows 颜色系统

java - 如何更改 Java 程序的 Dock 图标?

java - 如果中间文件夹不存在,则创建中间文件夹

java - 在 OutputStream 上调用 close() 会切断日志文件的输出

multithreading - 我的MessageWebSocket.OutputStream放置在哪里?

java - 使用javamail读取电子邮件的html正文

java - 按路径将 zip 文件夹中的文件放入字符串数组中

c - 如果我的代码只传递了一个文件*,我的代码如何识别传递给 fopen() 的模式?

java - 在 Java 中打开由通配符指定的目录中的文件

Java - 保存 Internet Radio 流