我正在尝试将控制台输入重定向到文件。问题是,每当我创建一个文件时,如果我选择包含unix时间戳的文件名,它就会覆盖它或创建新文件。我在这里看到了类似的问题,但我不确定使用哪种方法或类。
PrintStream out; PrintStream oldout = new PrintStream(System.out); try { out = new PrintStream( new FileOutputStream( workFolder + File.separator + "output" + Instant.now().getEpochSecond() + ".txt")); System.setOut(out); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.setOut(oldout);
所以如果没有一个文件来创建它,但是如果已经有一个文件来附加新数据,而不是覆盖或创建新文件。
As per Java docs
public FileOutputStream(String name, boolean append) throws FileNotFoundException
参数:name-依赖于系统的文件名 追加-如果为真, 然后字节将被写入文件的末尾,而不是 开始
参数:name-依赖于系统的文件名
追加-如果为真, 然后字节将被写入文件的末尾,而不是 开始
有一个构造函数允许传递布尔值,该值决定是否在文件中追加数据。
你可以用它。