2013-04-05 251 views
0

我想在文本文件中显示我的控制台输出。从java中将控制台输出写入文本文件

public static void main(String [ ] args){ 
    DataFilter df = new DataFilter(); 
    df.displayCategorizedList(); 
    PrintStream out; 
    try { 
     out = new PrintStream(new FileOutputStream("C:\\test1.txt", true)); 
     System.setOut(out); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 

我在屏幕上正确显示了我的结果,但没有导致文本文件? 测试文件生成但它是空的?

+0

does'df.displayCategorizedList();'print to stdout?那么你应该把它放在'System.setOut()'后面呢' – 2013-04-05 07:26:31

+0

我是java新手,你能不能给我更多提示请 – 2013-04-05 07:26:42

+0

这个话题似乎已经被相当彻底地处理了[在这里](http:// stackoverflow。 COM /问题/ 1994255 /如何到写控制台输出到一个-TXT文件)。 – 2013-04-05 07:27:32

回答

5

将系统输出流设置为文件后,应打印到“控制台”。

DataFilter df = new DataFilter(); 
    PrintStream out; 
    try { 
     out = new PrintStream(new FileOutputStream("C:\\test1.txt", true)); 
     System.setOut(out); 
     df.displayCategorizedList(); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } finally { 
     if (out != null) 
      out.close(); 
    } 

同样使用finally块来关闭流,否则数据可能不会被刷新到文件。

+0

您将o/p流设置为文件,然后保存在c文件夹中 – 2013-04-05 07:28:34

0

我建议以下方法:

public static void main(String [ ] args){ 
    DataFilter df = new DataFilter(); 
    try (PrintStream out = new PrintStream(new FileOutputStream("d:\\file.txt", true))) { 
      System.setOut(out); 
      df.displayCategorizedList(); 
    } catch (FileNotFoundException e) { 
     System.err.println(String.format("An error %s occurred!", e.getMessage())); 
    } 
} 

这是使用JDK 7的try-与资源的功能 - 这意味着它有例外(如FileNotFoundException异常)的交易,你必须与它也关闭资源(而不是finally块)。

如果您不能使用JDK 7,请使用其他响应中建议的方法之一。

相关问题