Подтвердить что ты не робот

Запись int в текстовый файл с использованием Writer

Writer wr = new FileWriter("123.txt");
wr.write(123);
wr.close();

Выходной файл содержит:
 {

Где проблема? Как написать int в текстовый файл с помощью Writer?

4b9b3361

Ответ 1

Вам нужно написать String...

вы можете попробовать.

wr.write("123");

ИЛИ

wr.write(new Integer(123).toString());

ИЛИ

wr.write( String.valueOf(123) );

Ответ 2

Существует также очень простой способ записи целых чисел в файл с помощью FileWriter:

Writer wr = new FileWriter("123.txt");
wr.write(123 + "");
wr.close();

"+" "объединяет целые числа с пустой строкой, таким образом анализируя целое число на строку. Очень легко сделать и запомнить.

Ответ 3

123 = 0x7b = код ascii для {, поэтому вы пишете символ в файл. Используйте метод toString(), чтобы преобразовать значение в строку и вывести его.

Ответ 4

Javadocs - ваш друг:

Класс удобства для записи файлов символов.

} - это символ с значением ASCII 123.

Если вы хотите записать текстовое представление 123 в этот файл, вы должны сделать:

wr.write(Integer.toString(123));

Ответ 5

Проблема заключается в том, что Writer.write используется для отправки одиночного символа на вывод. Непонятно, почему он int, а не char, правда, было бы разумно, если бы вы могли использовать это для отправки символов без BMP, но документация:

Записывает один символ. Символ, который должен быть записан, содержится в 16 младших битах заданного целочисленного значения; 16 старших бит игнорируются.

Вам нужно сначала преобразовать целое число в строку, например.

int v = 123; // I'm assuming this is dynamic in reality
wr.write(String.valueOf(v));

Ответ 6

У меня был хороший опыт в прошлом с PrintStream. PrintStream может использоваться двумя способами (по крайней мере)

PrintStream ps = new PrintStream("file_location.txt");

ИЛИ

PrintStream ps = new PrintStream(new File("file_loc.txt"));

и написать, используйте:

ps.println("String text");

ИЛИ

ps.println(Integer.parseInt(123));

Ответ 7

Это то, что вы пытаетесь. См. Это.

http://download.oracle.com/javase/1.4.2/docs/api/java/io/Writer.html#write(int)

Это имя метода в javadoc im reffering to, если ссылка не принимает вас автоматически.

public void write(int c)
       throws IOException

Итак, эквивалентный символ ascii для 123 равен {

Спасибо

Ответ 8

Еще один метод:

wr.write(""+123); //immediately convert int to its String representation

или

wr.write(""+i);

Но я не знаю, как это влияет на производительность по сравнению с другими методами, но немного проще писать.:)

PS: Извините за мой может быть плохой английский