2011-09-04 4 views
-1

После запуска моей программы я получаю это красиво отформатированный текст: enter image description hereВывод текста в файл?

Что мне нужно добавить в свой код, чтобы получить этот текст, выводимый в текстовый файл точно так, как это?

+0

: написана программа другими? –

+0

Я сам написал программу в BlueJ. – Jordan

ответ

0

Предполагая, что вы в настоящее время записываете свой вывод на экран, используя что-то вроде 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, чтобы использовать свой собственный метод вывода. Таким образом, когда вы хотите изменить способ обработки вывода (например, отправить его нескольким файлам, как на экран, так и на файл или что-то еще), у вас есть только одно место для изменения. Больше работы впереди, но в итоге вы получаете больше гибкости.

+0

Моя программа - это много строк и состоит из множества методов. Я не могу придерживаться «out.print ...» перед каждой строкой. – Jordan

+0

Ну, я мог бы, но это было бы огромной болью и потребовалось бы много времени. Есть ли другой способ? – Jordan

+0

Можете ли вы более подробно объяснить, как вы сейчас генерируете выход? Какой метод (ы) вы вызываете, чтобы записать его на экран? –

0

Вы не указали, откуда взялись данные, но в любом случае вход или 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(""); 
    } 

} 

}

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