
java如何将控制台的内容输入文件
用户关注问题
怎样将Java程序的控制台输出保存到文件?
我希望将Java程序在控制台输出的内容直接保存到一个文本文件中,有哪些方法可以实现?
通过重定向标准输出流保存内容
可以使用System.setOut方法,将标准输出流(System.out)重定向到一个PrintStream,该PrintStream绑定到文件输出流。示例如下:
PrintStream ps = new PrintStream(new FileOutputStream("output.txt"));
System.setOut(ps);
System.out.println("这条信息会写入到output.txt中");
ps.close();
这样,之后所有通过System.out打印的内容都会写入指定文件。
在Java中如何从控制台读取输入并写入文件?
我想从控制台接收用户输入,然后将输入的内容写入到文件,该怎么实现?
使用Scanner读取控制台输入并通过文件写入流保存
可以借助Scanner对象读取System.in,实现对用户输入的捕获,同时利用BufferedWriter或者FileWriter将读取的内容写入文件。例如:
Scanner scanner = new Scanner(System.in);
BufferedWriter writer = new BufferedWriter(new FileWriter("input.txt"));
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
if (line.equalsIgnoreCase("exit")) {
break;
}
writer.write(line);
writer.newLine();
}
writer.close();
scanner.close();
程序读取每行输入直到用户输入"exit",并写入文件。
Java中有没有简单的方法捕获控制台输出内容?
想要在代码中获取所有向控制台打印的内容以便处理或者保存,有什么简便做法?
使用ByteArrayOutputStream临时捕获输出流
可以先将System.out替换为打印到ByteArrayOutputStream的PrintStream,程序运行完成后,将ByteArrayOutputStream里的内容转换为字符串或者写入文件。例如:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);
PrintStream oldOut = System.out;
System.setOut(ps);
// 这里是输出内容
System.out.println("测试内容");
// 恢复标准输出
System.out.flush();
System.setOut(oldOut);
String consoleContent = baos.toString();
System.out.println("捕获的输出内容:" + consoleContent);
这样可以捕获控制台输出内容进行后续处理。