Ввод и вывод Java - PullRequest
       36

Ввод и вывод Java

0 голосов
/ 22 апреля 2011

Объясните разницу между выходными данными следующих двух фрагментов кода для вывода int i в файл:

я)

PrintWriter outfile = new PrintWriter(new FileWriter("ints.txt"));
outfile.print(i);

б)

DataOutputStream out = new DataOutputStream(new FileOutputStream("ints.dat"));
out.writeInt(i);

Я думаю, что принтер принтера берет строку и преобразует ее в поток символов Unicode, тогда как поток вывода данных преобразует элементы данных в последовательность байтов.

Что бы вы еще добавили?

Ответы [ 3 ]

1 голос
/ 22 апреля 2011

С DataOutputStream Javadoc :

Поток вывода данных позволяет приложение записывает примитивные данные Java типы выходного потока в портативный способ. Приложение может затем использовать поток ввода данных, чтобы прочитать данные возвращаются.

С PrintWriter Javadoc

Печать отформатированных представлений объекты в поток вывода текста.

Все только байты, но они представляют разные вещи. С DataOutpuStream вы получаете байты, которые вы можете читать обратно в ваш примитивный тип Java int, тогда как с PrintWriter вы этого не делаете.

1 голос
/ 22 апреля 2011

Файлы содержат только байты, поэтому все заканчивается как байты в конце.

Строка уже является потоком символов.Когда вы записываете String в файл, он должен превратить его в поток байтов.

int - это четыре байта.writeInt () превращает его в большое порядковое число.

0 голосов
/ 22 апреля 2011

возможно повторяет то, что уже было сказано, но только для того, чтобы сделать это более явным:

когда вы используете печатающее устройство и говорите, что у вас значение int 65 - писатель напечатает 2 символа: «6» и «5»

когда вы используете выходной поток, он печатает байты, поэтому записывает в файл байт со значением 65 - это код символа в ASCII / UTF-8 для «A», так что если вы откроете В файле в текстовом редакторе вы увидите символ «А», а не «6», за которым следует «5», как указано выше.

...