2015-09-17 3 views
4

У меня есть строка, что я отформатирован с помощью метода System.out.format(), я сделать что-то вроде:Дать отформатированную строку в файл - Java

System.out.format("I = %3d var = %9.6f", i, myVar); 

, но когда я пытаюсь написать эту отформатированную строку в файл, я только получить что-то вроде "[email protected]" в нем.

Посмотрев в документацию понял, что этот метод немного напоминает System.out.print() и просто возвращает PrintStream для отображения (в консоли, например), поэтому я попытался преобразовать его .toString или String.valueOf(), но я получаю тот же результат.

Так что мне было интересно, есть ли способ форматировать строку так же, как метод String.out.format(), но таким образом, который будет доступен для записи в файл?

Вот примерно код я использую (просто сделать появляются полезные части)

WRITE_MY_LINE(System.out.format(" I = %3d var = %9.6f", i, myVar).toString()); 
//also tried this : 
WRITE_MY_LINE(String.valueOf(System.out.format(" I = %3d var = %9.6f", i, myVar))); 

public static void WRITE_MY_LINE(String line) { 
     buff_out = new BufferedWriter(new FileWriter(ascii_path, true)); 

     buff_out.append(line); 
     buff_out.newLine(); 
     buff_out.flush(); 
} 
+0

Override 'Объект # toString' в классе вашей переменной. – Mena

ответ

2

String.format является то, что вы ищете возвращает String, а не PrintStream как System.out.format.

Ваш код должен быть:

WRITE_MY_LINE(String.format(" I = %3d var = %9.6f", i, myVar)); 

Посмотрите на Java.lang.String.format() Method для получения дополнительной информации.

3

System.out.format возвращает PrintStreamObject и toString вызов метода дает вам [email protected], который вы пытаетесь писать.

Вместо этого вы должны использовать String.format.

т.е.

WRITE_MY_LINE(String.format(" I = %3d var = %9.6f", i, myVar)); 
2

Использование

WRITE_MY_LINE(String.format(" I = %3d var = %9.6f", i, myVar)); 
1

Вы также можете использовать java.util.Formatter из java 7. см документации:

java.util.Formatter

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