2015-08-01 2 views
0

У меня есть поток (подключен к лазурному blob), который содержит строки и целые числа. Тот же поток также потребляется процессом .net.C# BinaryReader/Writer эквивалент в JAVA

В C# запись и чтение выполняются с помощью специфичных для типа методов BinaryWriter и BinaryReader классов e, g., BinaryWriter.Write ("путь1; путь2") и BinaryReader.ReadString().

В Java я не смог найти соответствующие библиотеки для достижения того же. Большинство методов InputStream способны считывать всю строку строки.

Если на Java есть такие библиотеки, поделитесь со мной.

ответ

1

Большинство методов InputStream способны считывать всю строку строки.

Ни один из InputStream методов не способен делать это.

Что вы ищете является DataInputStream и DataOutputStream.

1

Если вы пытаетесь прочитать данные, полученные из BinaryWriter в C# вы собираетесь возиться с этим на уровне байтов. Данные, которые вы действительно хотите, имеют префикс с целым числом, чтобы показать длину данных. Вы можете прочитать о том, как префикс генерируется здесь:

C# BinaryWriter length prefix - UTF7 encoding

Стоит отметить, что от чего я тестировал длина записывается в обратном направлении. В моем случае первые два байта файла были 0xA0 0x54 конвертировать это в двоичное, чтобы получить 10100000 01010100. Первый байт начинается с 1, так что это не последний байт. Второй байт начинается с 0, но это последний (или в данном случае первый байт) для длины. Таким образом, полученный префикс длины равен 1010100 (взято из последнего байта, удалив индикатор, что это последний байт). Затем все предыдущие байты 0100000, который дает нам результат 10101000100000 или 10784 байт. Файл, с которым я имел дело, составлял 10786 байт, поэтому с двухбайтным префиксом, указывающим длину, это правильно.

 Смежные вопросы

  • Нет связанных вопросов^_^