【问题标题】:read url in binary mode in java在java中以二进制模式读取url
【发布时间】:2011-02-28 06:59:52
【问题描述】:

在 java 中,我需要从站点读取二进制文件并将其写入磁盘文件。此示例http://java.sun.com/docs/books/tutorial/networking/urls/readingURL.html 可以成功读取网页,但是当我尝试从本地主机服务器读取二进制文件并将其写入磁盘文件时,内容会更改,从而损坏二进制文件。使用 fc 我看到 0x90 更改为 0x3F 和其他更改。我如何访问二进制文件(读取 url 并写入文件)而不使用 java 或任何其他更改任何字符的东西,例如进行任何换行符转换或字符转换或其他任何东西,只需读取输入 url 并将其写为文件。

【问题讨论】:

    标签: java file url binary io


    【解决方案1】:

    不要将InputStreamReaderBufferedReader 包裹在openStream() 周围,而是将BufferedInputStream 包裹在它周围。

    【讨论】:

    • 谢谢,成功了!还使用了 new BufferedOutputStream(new FileOutputStream(filename));对于输出文件也是如此,现在文件成功打开并且与原始文件完全相同。谢谢!
    【解决方案2】:

    java.io.InputStreamReaderJavaDoc 声明:

    InputStreamReader 是从字节流到字符流的桥梁:它读取字节并使用指定的字符集将它们解码为字符。它使用的字符集可以由名称指定,也可以显式给出,或者可以接受平台的默认字符集。

    在您的情况下,您要求 JVM 将字节转换为将转换为字符串的字符。这不是你想要的。而是直接从java.io.InputStream 或通过java.io.BufferedInputStream 读取字节。

    【讨论】:

    • 一般ReaderWriter 类用于读取和写入文本,InputStreamOutputStream 用于读取和写入字节(二进制数据)而无需转换。
    猜你喜欢
    • 2016-09-30
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 2012-07-08
    • 2021-09-08
    相关资源
    最近更新 更多