1

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

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

例如,我有一个程序:

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
4

3 回答 3

2

您可以执行以下操作:

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

要通过多种方式将内容写入文件,您可以查看阅读、写入和创建文件教程。

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

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();                                                                                 
  }
}
于 2012-11-03T18:17:07.533 回答
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");
于 2012-11-03T18:20:54.277 回答
0

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

编辑后。

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

     pw.close()
于 2012-11-03T18:16:45.963 回答