我想从流中读取文本和二进制文件,其中流可以是文件或 URL 连接。两个流具有相同的格式,其中有一个 ASCII 文本 header ,后跟一个大的二进制数据 block 。我正在使用 DataInputStream 来执行此操作。对于文件,我正在使用
DataInputStream dis = new DataInputStream(new FileInputStream(new File("test")));
对于 URL,我使用(其中 uc 初始化为指向 URL):
DataInputStream dis = new DataInputStream(new BufferedInputStream(uc.getInputStream()));
设置 DataInputStream 后,我将执行以下操作:
dis.readLine()
dis.read(buf);
这有效,但我注意到 readLine 是 depecrated (尽管有 posts 提到使用它)。由于我的文本是 ASCII,可以继续使用它吗?如果这不是一个好主意,并且我按照 JDK 建议使用 BufferedReader,那么有没有办法同时访问文本和二进制文件?我尝试使用 BufferedReader 来获取文本 header ,但随后在使用底层流时得到了不正确的二进制数据,可能是因为其中一些数据已被消耗。
最佳答案
它被弃用的原因是未能正确地将字节转换为字符。由于本示例仅限于 ASCII,因此使用没有问题。
关于java - 从 Java 的一个流中读取文本和二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8394325/