问题如何在Java中读取/写入文件我已经问过如何用Java读写文件,因为我认为典型的FileReader
, BufferedReader
操作是保留在我的文件中的。
现在我确信其他操作是负责这个(例如一个Runtime.getRuntime().exec(<CommandLine>).waitFor()
)。
实际上,我并不关心哪个命令完全是负责保存文件,我只想让我的应用程序放弃它。
这可能吗? 有没有像这样的this.Release_File(File "<Filename>");
在Java中?
…(经过一段时间和实验)
同时我还有点进一步:我添加了Thread.sleep(5000);
这是在做这个工作,所以如果我稍微等一下,一切正常,所以真正的问题是什么?
我正在启动一个命令行,就像这样:
cmd /c <program>.exe >> <output_File>.log
我这样做(在我的Java代码中),如下所示:
exitcode = Runtime.getRuntime().exec(cmdline).waitFor();
问题似乎如下:命令行有一个redirect,将其输出保存到.log日志文件。 这个写入是立即开始的,但是当“cmd / c”完成时,操作系统(这种情况下的Windows 7)还没有完成对其input/输出缓冲区的刷新。 因此, Runtime.getRuntime().exec(cmdline)
已经完成,但底层的缓冲区刷新仍然很忙。
如您所见,我已经使用cmd /c
来告诉Windows在完成命令后终止命令提示符,但我真正需要的是类似于:
cmd /Completely_Finished <program>.exe >> <output_File>.log
操作系统已经准备好所有与.exe相关的进程,这是Completely_Finished
意思。 有人知道这是否存在?
Ps我已经有一个关于这个问题的解决方法:在文件读取周围使用while循环,直到不会抛出exception。 虽然工作,我觉得这个工作非常肮脏,并没有解决问题的根本原因。
提前致谢