让我们说我有一个java程序写出一个大JSON占用一些时间。有没有办法确定程序是否在下次启动时意外退出以确定我的JSON是否已损坏?
答案 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
操作保留在单个文件系统中,这样就可以进行简单的,几乎是瞬时的原子操作,而不是任何隐含的副本。