广泛的讨论问题.是否有任何库允许我在Java中存储我的应用程序的执行状态?
例如,我有一个处理文件的应用程序,现在应用程序可能会被迫在某个时刻突然关闭.我想存储有关所有文件已处理的内容以及所有文件尚未处理的信息,以及处理的处理阶段正在进行的流程.
是否已有任何抽象此功能的库或我必须从头开始实现它?
看来您正在寻找的是可以使用Java Serialization API执行的序列化。
如果您决定使用已知的库(例如 Apache Commons Lang 及其SerializationUtils类(该类本身构建在 Java 序列化 API 之上)),您可以编写更少的代码。
使用最新的,将应用程序状态序列化/反序列化到文件中只需几行即可完成。
您唯一需要做的就是创建一个保存应用程序状态的类,我们称其为... ApplicationState:-) 它看起来像这样:
class ApplicationState {
enum ProcessState {
READ_DONE,
PROCESSING_STARTED,
PROCESSING_ENDED,
ANOTHER_STATE;
}
private List<String> filesDone, filesToDo;
private String currentlyProcessingFile;
private ProcessState currentProcessState;
}
Run Code Online (Sandbox Code Playgroud)
有了这样的结构,并使用 SerializationUtils,序列化是通过以下方式完成的:
try {
ApplicationState state = new ApplicationState();
...
// File to serialize object to
String fileName = "applicationState.ser";
// New file output stream for the file
FileOutputStream fos = new FileOutputStream(fileName);
// Serialize String
SerializationUtils.serialize(state, fos);
fos.close();
// Open FileInputStream to the file
FileInputStream fis = new FileInputStream(fileName);
// Deserialize and cast into String
String ser = (String) SerializationUtils.deserialize(fis);
System.out.println(ser);
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)