【问题标题】:C# BinaryReader/Writer equivalent in JAVAJAVA 中的 C# BinaryReader/Writer 等效项
【发布时间】:2015-10-23 22:36:51
【问题描述】:

我有一个包含字符串和整数的流(连接到一个 azure blob)。 .net 进程也使用相同的流。

在 C# 中,写入和读取是通过 BinaryWriter 和 BinaryReader 类的特定类型方法完成的,例如 BinaryWriter.Write("path1;path2") 和 BinaryReader.ReadString()。

在 Java 中,我找不到实现相同功能的相关库。大多数 InputStream 方法都能够读取整行字符串。

如果Java中有这样的库,请与我分享。

【问题讨论】:

    标签: inputstream java-io outputstream


    【解决方案1】:

    大多数 InputStream 方法都能够读取整行字符串。

    没有一个 InputStream 方法能够做到这一点。

    你要找的是DataInputStreamDataOutputStream.

    【讨论】:

      【解决方案2】:

      如果您尝试在 C# 中读取从 BinaryWriter 生成的数据,您将不得不在字节级别上处理这个问题。您实际想要的数据以整数为前缀,以显示数据的长度。您可以在此处阅读有关如何生成前缀的信息:

      C# BinaryWriter length prefix - UTF7 encoding

      值得一提的是,我测试的长度是倒写的。在我的情况下,文件的前两个字节是0xA0 0x54,将其转换为二进制以获得10100000 01010100。这里的第一个字节以 1 开头,因此它不是最后一个字节。第二个字节以 0 开头,因此它是长度的最后一个(或在本例中为第一个字节)。所以得到的长度前缀是1010100(取自最后一个字节,去掉了它是最后一个字节的指示符)然后是所有前面的字节0100000,这给了我们10101000100000或10784字节的结果。我正在处理的文件是 10786 字节,所以两个字节的前缀表示长度是正确的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-15
        • 2010-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-31
        • 2011-06-16
        相关资源
        最近更新 更多