【问题标题】:Read text and binary from one stream in Java从 Java 中的一个流中读取文本和二进制文件
【发布时间】:2011-12-06 01:41:56
【问题描述】:

我想从流中读取文本和二进制文件,其中流可以是文件或 URL 连接。两个流具有相同的格式,其中有一个 ASCII 文本标头,后跟一个大的二进制数据块。我正在使用 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 来获取文本标题,但是在使用底层流时我得到了不正确的二进制数据,可能是因为其中一些已经被消耗了。

【问题讨论】:

  • ASCII 文本标题有多长?它们是固定长度的吗?您能否将标头读取为“二进制数据”并转换为一个或多个字符串?
  • 标头是可变长度的,我需要寻找一个分隔符才能知道二进制数据从哪里开始。但正如你所说,我认为我可以将文本读取为二进制(使用 readByte)并构建一个字符串。谢谢。

标签: java string file http


【解决方案1】:

它被弃用的原因是未能正确地将字节转换为字符。由于这个例子仅限于ASCII,所以使用起来没有问题。

【讨论】:

    猜你喜欢
    • 2015-07-27
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 2023-03-13
    相关资源
    最近更新 更多