运行我的程序后,我得到了这个格式精美的文本:
我需要将哪些内容添加到我的代码中才能将此文本完全按原样输出到.txt文件中?
答案 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("");
}
}
}