如何将交互式程序的输出重定向到文件?

时间:2012-11-03 18:14:55

标签: java

我有一个交互式java程序,它从用户那里获取输入...现在我需要将屏幕上打印的任何输出重定向到文件?是可能的。

从java文档中我得到了方法“System.setOut(PrintStream ps);”但我不知道如何使用这种方法?

E.g。我有一个程序:

public class A{
  int i;
   void func()
   {
      System.out.println("Enter a value:");
      Scanner in1=new Scanner(System.in);
      i= in1.nextInt();
      System.out.println("i="+i);
   }
 }

现在我想将下面给出的输出重定向到一个文件:

 Enter a value:
 1
 i=1

3 个答案:

答案 0 :(得分:2)

您可以执行以下操作:

System.setOut(new PrintStream(new BufferedOutputStream(new FileOutputStream("output.txt"))));

要通过多种方式向文件写入内容,您可以查看Reading, Writing, and Creating Files教程。

在您的情况下,如果您想要在文件中精确打印屏幕上的内容,即使是用户输入,您也可以执行以下操作:

void func(){                                                                                             
  try {                                                                                                  
    PrintStream out=new PrintStream(new BufferedOutputStream(new FileOutputStream("output.txt")));       
    System.out.println("Enter a value:");                                                                
    out.println("Enter a value:");                                                                       
    Scanner in1=new Scanner(System.in);                                                                  
    int i= in1.nextInt();                                                                                
    out.println(i);                                                                                      
    System.out.println("i="+i);                                                                          
    out.println("i="+i);                                                                                 
    out.close();                                                                                         
  } catch (FileNotFoundException e) {                                                                    
    System.err.println("An error has occurred "+e.getMessage());                                         
    e.printStackTrace();                                                                                 
  }
}

答案 1 :(得分:0)

java.io包中的

类就是为此而设计的。我建议你看看java.io package

修改后。

   File file = new File("newFile.txt");
   PrintWriter pw = new PrintWriter(new FileWriter(file));
    pw.println("your input to the file");
    pw.flush();

     pw.close()

答案 2 :(得分:0)

你走了:

  // all to the console    
        System.out.println("This goes to the console");
        PrintStream console = System.out; // save the console out for later.
  // now to the file    
        File file = new File("out.txt");
        FileOutputStream fos = new FileOutputStream(file);
        PrintStream ps = new PrintStream(fos);
        System.setOut(ps);
        System.out.println("This goes to the file out.txt");

  // and back to normal
        System.setOut(console);
        System.out.println("This goes back to the console");