2014-11-17 4 views
0

У меня есть только более 100 строк данных и статистики, которые мне нужно распечатать. Я использую:Печать на систему и на печатьWriter

PrintWriter p = new PrintWriter(fileName); 

Причина, почему это около 100 линий, потому что мне нужно печатать как системы, так и файл (около 50 строк каждая). Есть ли более короткий способ печати и «префикс» моего кода?

System.out.println("Prints Stats"); //To System 
p.println("Prints Stats"); //To File 
etc 

Для каждой строки, напечатанной в Системе, имеется точно такая же строка, которая печатается в файле. Есть ли способ объединить два или сделать его короче? Или я просто застрял с этой «уродливой», длинной кучей гравюр?

+0

Возможный дубликат: [Запись в консоль и текстовый файл] (http://stackoverflow.com/questions/16237546/writing-to-console-and-text-file) – Pshemo

+0

Вы можете использовать [Logger] (https: //docs.oracle.com/javase/7/docs/api/java/util/logging/Logger.html) ... – Mena

+0

Все прекрасно работает Pshemo, я просто хочу найти способ его лаконичности. – MrAwesome8

ответ

1

Существует несколько способов сделать это.

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

Если вы не пишете тонны текста, вы можете использовать StringBuilder создать свой вывод, добавив к нему, вставив материал внутри него и т.д., и как только она будет готова, распечатать как p, так и System.out.

Дать свой собственный println()

Если вы используете только метод println(), вы можете написать свой собственный метод, который вызывает его для обоих писателей:

private void println(String s) { 
    System.out.println(s); 
    p.out.println(s); 
} 

То есть, Предполагая, что p является полем, а не локальной переменной.

Использование формата

Вместо использования println() вы можете использовать printf() или format() методы. Первый параметр - строка форматирования, и вы можете форматировать несколько строк в одной печати с использованием строки формата. Например:

System.out.printf("Name: %s%nSurname: %s%nAge: %d%n", "Susan", "Carter", 30); 

печатать ли

Name: Susan 
Surname: Carter 
Age: 30 

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

String formatString = "Name: %s%nSurname: %s%nAge: %d%n"; 
Object[] arguments = { "Susan", "Carter", 30); 

p.printf(formatString, arguments); 
System.out.printf(formatString, arguments); 

Это напечатает выше трехстрочного вывода в ваш файл, а затем на выход вашей системы.

+0

Спасибо, я написал свой собственный метод печати (он называется printlnf) таким образом, что он может очистить много кода самым удобным способом, а также для моей потребности также использовать консольный вывод, который не попадает в файл. Благодаря! – MrAwesome8

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

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