Странные выводы при использовании DataOutputStream - PullRequest
1 голос
/ 08 сентября 2011

Я использую DataOutputStream Java IO для записи в файл, но когда я выполняю программу, я не получаю правильный вывод, вместо этого я получаю странные символы.- Хотя я заметил, что работает только запись строк с использованием метода writeUTF (String str), даже при использовании writeBytes (String s) получается странный символ, который должен быть пробелом.возможные причины, может быть что-то связанное с кодировками?Заранее спасибо.

FileOutputStream fs= new FileOutputStream("Path/to/my/file");

DataOutputStream ds = new DataOutputStream(fs);


ds.writeBoolean(false);
ds.writeChar('A');
ds.writeInt(42);
ds.writeBytes("test1");
ds.writeUTF("test2");


fs.close();

Ответы [ 2 ]

2 голосов
/ 08 сентября 2011

Класс DataOutputStream определен для записи потока байтов , а не потока символов .Этот поток байтов предназначен для эффективного и переносимого хранения независимо от того, могут ли люди его читать или нет.

Если вы хотите текстовые файлы, читаемые человеком, используйте средство записи XML.Кстати, вывод, который вы получаете , является правильным, скорее, ваше понимание неверно.Возможно, вам просто нужно прочитать и понять документацию , которая поставляется вместе с классом.

1 голос
/ 08 сентября 2011

Потоки данных предназначены для двоичных данных. DataOutputStream записывает целое число в двоичном формате, то есть разбивает целое число на 4 байта и записывает эти значения

...