Java:写入时意外退出

时间:2016-09-09 16:29:44

标签: java error-handling io

让我们说我有一个java程序写出一个大JSON占用一些时间。有没有办法确定程序是否在下次启动时意外退出以确定我的JSON是否已损坏?

2 个答案:

答案 0 :(得分:0)

请你解释清楚吗?你的意思是在JVM退出后再次启动?如果这就是你的意思,你将需要一个基于文件的标志。

 String expectedFlag="Good Exit";

 void afterExit(){
        //always overwrite whatever is in this file 
        //write flag value to a txt file
 }

 boolean beforeStarting(){
      String flagText = readFromFlagFile();
      if(expectedFlag.equals(flagText)){

          return true;

       }

       return false;
 }

答案 1 :(得分:0)

在流程完成后重命名文件:

try
{
    File outputFile = ...;
    someLongRunningProcess( outputFile );
    File successfulFile = ...
    outputFile.renameTo( successfulFile );
}
catch ( Exception ex )
{
    ...
}

如果重新启动时没有successfulFile,则之前的运行不成功。

只需将renameTo操作保留在单个文件系统中,这样就可以进行简单的,几乎是瞬时的原子操作,而不是任何隐含的副本。