JAVA中的C#BinaryReader / Writer等效

时间:2015-08-01 08:27:59

标签: inputstream java-io outputstream

我有一个流(连接到azure blob),其中包含字符串和整数。同样的流也被.net进程消耗。

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

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

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

2 个答案:

答案 0 :(得分:1)

  

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

InputStream方法能够做到这一点。

您要找的是DataInputStreamDataOutputStream.

答案 1 :(得分:1)

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

C# BinaryWriter length prefix - UTF7 encoding

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