如何将终端输出(和输入)复制到 java 中的文件

How to copy the terminal output (and input) to a file in java

我想将终端上的所有文本保存为文本文件的输出。对于输出,可以使用一个函数来代替 System.out.println()

    class OutSave
{
    String output;
    public static void main()
    {
        output="";
        print("Print this");
        print("And save this");
    }
    public static print(String p)
    {
        output=output+"\n"+p;
        System.out.println(p);
    }
}

类似这样,但我无法根据用户提供的输入解决这个问题。

提前致谢

您可以使用文件编写器检查 link : http://java.sun.com/j2se/1.4.2/docs/api/java/io/FileWriter.html

执行此操作的通常方法不需要在您的 Java 程序中执行任何操作,并且适用于任何程序,无论它最初是用什么语言编写的。

从命令行,在大多数 shell 中(bash、C shell、MS-DOS 等),运行:

$program > outfile.txt

其中 $program 是可执行文件的名称。

这就是俗称的redirection

这里是一个简单的示例,说明如何将您正在打印的内容写入日志文件。

class OutSave
{

    File output = new File("output.txt");

    public static void main()
    {
        print("Print this");
        print("And save this");
    }

    public static print(String str)
    {
        System.out.println(str);
        writeToFile(output, str);
    }

    public void writeToFile(File file, String str) {
        BufferedWriter bw = new BufferedWriter(new FileWriter(file));
        bw.write(str);
        bw.close();
    }
}

编辑: 记录用户输入(整数)

    Boolean running = true;
    System.out.println("Enter a Number: ");

    while (true) {
        while (!sc.hasNextInt()) {
            System.out.println("Try again, Enter a Number: "); //invalid entry
            sc.nextLine();
        }
        WriteToFile(output, Integer.toString(sc.nextInt()));
    }

您可以从方法中调用此代码,然后更改 运行 布尔值以在完成后退出循环,因为如果您不退出,这将使您的程序挂在输入循环中。穿这个也是个好主意。