java - 从 Java 的一个流中读取文本和二进制文件

标签 java string file http

我想从流中读取文本和二进制文件,其中流可以是文件或 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/

相关文章:

php - 检查字符串是否为逗号分隔的数字列表

android - Android 的内部存储;创建文件

iphone - iOS 5 : Is it possible to write a struct to a plist file?

java - 如何将控制台日志重定向到 Mac OS X 中的 Java Web Start 文件?

java - 了解 Eclipse 类路径声明

java - RegEx检查数字中的数字是否全部相同或顺序

Python:如何删除以多行关键字开头的字符串的一部分?

java - 在 eclipse 中从 .class 文件构建可执行 jar 文件

c# - 将换行符附加到字符串的最佳方法,最后一个除外

android - 在 Android 中,_id 是否必须存在于任何创建的表中?