我有一个交互式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
答案 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 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");