我知道如果我做类似的事情
copyFromInToOut(new FileInputStream(f1), new FileOutputStream(f2));
System.gc();
它将在这些FileInputStream
s 上运行 GC,并关闭它们。但如果我这样做
copyFromInToOut(new BufferedInputStream(new FileInputStream(f1)), new BufferedOutputStream(new FileOutputStream(f2));
System.gc();
FileOutputStream 是否会在 BufferedOutputStream 之前被 GC,而不导致缓冲区刷新?我不能调用flush、close,因为这比这需要更多的步骤。它首先涉及声明一个缓冲的输入流,传递,然后调用关闭。或者我这样做安全吗?