打印到文件而不是终端

时间:2017-10-19 09:58:11

标签: java file-writing

我制定了一个确定谋杀时间的程序。我现在的代码现在准确地打印到终端应该是什么。我希望它打印到一个文件。但是,我不应该使用System.setOut()来完成此任务。我应该打印到终端的文件而不是

我知道如何在文件中写一个简单的String,这里的问题是我已经有了将结果打印到终端的方法,而且我不确定如何将这些方法“转换”为打印而是改为文件。

这是我的两种印刷方法和主要方法:

打印2d阵列方法:

public static void printArray2d(String[][] array2d){
    for(int i = 0; i < array2d.length; i++){
        for(int j = 0; j < array2d[i].length; j++){
            System.out.print(array2d[i][j]);
        }
        System.out.print("\n");
    }
}

打印完整报告方法:

public static void printReport(String[][] array2d, double arrayMin, double arrayMax){
    System.out.println("Time since death probability distribution");
    double hours = (arrayMax-arrayMin)/(array2d.length-1);
    System.out.printf("Each line corresponds to approximately %.2f hours\n", hours);
    System.out.printf("%.2f hours\n", arrayMin);
    printArray2d(array2d);
    System.out.printf("%.2f hours\n", arrayMax);
}

主要方法:

public static void main(String args[]) {

    double[] array = cooldownSamples(27, 1000);
    double[] counts = countsFromArray(array, 20);
    String[][] array2d = array2dFromCounts(counts);
    printReport(array2d, minFromArray(array), maxFromArray(array));
}

如果需要,我可以发布整个代码。

我知道之前有过类似的问题,但是他们都没有给我提供我需要的帮助。我也没有足够的声誉来对这些主题上给出的任何答案提出后续问题,所以我被迫提出一个新问题。

提前感谢您提供任何帮助!

其他信息:

尽管我说我不应该使用System.setOut(),但我尝试使用this thread中给出的方法和答案,没有任何运气。如果最好和最有效的方法是通过System.setOut(),我很感激答案,让我了解如何实现这一点,并使其在我的代码中工作,即使我正在寻找替代方法。

1 个答案:

答案 0 :(得分:1)

这很简单:现在,您正在使用(静态)对象System.out进行所有打印。此对象具有print,println等方法。

您可以创建一个说PrintWriter的实例,并在该对象上调用方法,而不是使用System.out,例如

PrintWriter writer = new PrintWriter("whatever.txt");
writer.println("whatever");
writer.close();

这就是全部。或者甚至更简单,您可以实例化PrintStream对象。然后你可以做以下事情:

 PrintStream out = System.out // or new PrintStream("filename");
 doStuff(out);

... with:

 public void doStuff(PrintStream out) {
   out.println...

现在你有一个中心位置,你决定是否要打印到System.out或其他地方!