将文本输出到文件?

时间:2011-09-04 02:31:41

标签: java text

运行我的程序后,我得到了这个格式精美的文本:enter image description here

我需要将哪些内容添加到我的代码中才能将此文本完全按原样输出到.txt文件中?

2 个答案:

答案 0 :(得分: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");
  }
  }
}

PS。一个警告:文本中“格式精美”的部分可能依赖于以等宽字体显示的输出(所有字符的宽度相同);如果以非等宽字体查看,列将不会排列。如果您将其保存为普通的.txt文件,则无法控制其他人在打开文件时用于显示该文件的字体。


更新

如果您发现某个程序已经完成System.out.println次调用并且您希望将输出定向到文件,那么您可以采取几种方法。

1)快速&脏的方法是打开一个PrintStream到你想要的输出文件,然后调用System.setOut()System.out重定向到指定的PrintStream。

2)一种可能更简洁的方法是重写System.out.println的所有调用以使用您自己的输出方法。这样,当您想要更改处理输出的方式(例如,将其发送到多个文件,同时发送到屏幕和文件等)时,您只需要更改一个位置。提前做更多的工作,但最终会给你更大的灵活性。

答案 1 :(得分:0)

你没有说明数据的来源,但无论如何输入或db,我会放在一个多维数组上。然后打印就很容易了。

P.S。另外为了保持格式,我会使用制表符分隔值“/ t”

public class 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("");
     }

}

}