После запуска моей программы я получаю это красиво отформатированный текст: Вывод текста в файл?
Что мне нужно добавить в свой код, чтобы получить этот текст, выводимый в текстовый файл точно так, как это?
После запуска моей программы я получаю это красиво отформатированный текст: Вывод текста в файл?
Что мне нужно добавить в свой код, чтобы получить этот текст, выводимый в текстовый файл точно так, как это?
Предполагая, что вы в настоящее время записываете свой вывод на экран, используя что-то вроде System.out.Println(...)
, сопоставимым способом записи текста в файл является использование PrintStream.
Вы должны быть в состоянии найти много примеров того, как это сделать при поиске; here's one.
import java.io.*;
class PrintStreamDemo {
public static void main(String args[]){
FileOutputStream out;
PrintStream ps; // declare a print stream object
try {
// Create a new file output stream
out = new FileOutputStream("myfile.txt");
// Connect print stream to the output stream
ps = new PrintStream(out);
ps.println ("This data is written to a file:");
System.err.println ("Write successfully");
ps.close();
}
catch (Exception e){
System.err.println ("Error in writing to file");
}
}
}
пс. одно предостережение: «прекрасно отформатированная» часть вашего текста, вероятно, зависит от вывода, отображаемого в моноширинном шрифте (все символы одинаковой ширины); если смотреть в немоноширинном шрифте, столбцы не выстраиваются в линию. Если вы сохраняете его как простой .txt-файл, у вас нет контроля над тем, какой шрифт кто-то еще будет использовать для отображения этого файла при его открытии.
Update:
Есть несколько подходов вы могли бы принять, если вы найдете у вас есть программа, полный System.out.println
звонков, и вы хотите, чтобы направить вывод в файл вместо.
1) Быстрый & грязный способ будет открыть PrintStream до нужного выходного файла, а затем вызвать System.setOut()
перенаправить System.out
на указанный PrintStream.
2) Возможно, более чистым способом было бы переписать все вызовы System.out.println
, чтобы использовать свой собственный метод вывода. Таким образом, когда вы хотите изменить способ обработки вывода (например, отправить его нескольким файлам, как на экран, так и на файл или что-то еще), у вас есть только одно место для изменения. Больше работы впереди, но в итоге вы получаете больше гибкости.
Моя программа - это много строк и состоит из множества методов. Я не могу придерживаться «out.print ...» перед каждой строкой. – Jordan
Ну, я мог бы, но это было бы огромной болью и потребовалось бы много времени. Есть ли другой способ? – Jordan
Можете ли вы более подробно объяснить, как вы сейчас генерируете выход? Какой метод (ы) вы вызываете, чтобы записать его на экран? –
Вы не указали, откуда взялись данные, но в любом случае вход или db я бы разместил на многомерном массиве. Тогда распечатать будет легко.
P.S. Кроме того, чтобы сохранить формат я хотел бы использовать значения, разделенные табуляцией "/ т"
общественного класса Parser {
private void parseData{
int[][] array = new int[3][12];
// print array in rectangular form
for (int r=0; r<array.length; r++) {
for (int c=0; c<array[r].length; c++) {
System.out.print(array[r][c] + "\t");
}
System.out.println("");
}
}
}
: написана программа другими? –
Я сам написал программу в BlueJ. – Jordan