我的应用程序使用此代码永久保存 ArrayList,以便在重新启动应用程序时调用它。
private static void storeDevices() {
// Object serialization
try {
FileOutputStream fos = new FileOutputStream("devices.ser");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(devices);
oos.flush();
oos.close();
}
catch(Exception e) {
showAlert("Store Devices", "Exception storing devices to file: " + e);
}
}
当我从 Netbeans 运行时,一切正常。我已将应用程序包装在安装程序中(使用 Launch4J 和 Inno Setup Compiler),当我将应用程序安装到 C:/Program Files/MyApp(在 Windows 7 上)时,上面的代码给出了以下异常:
将设备存储到文件的异常:java.io.FileNotFoundException:devices.ser(访问被拒绝)
但是,当我安装到 C:/MyApp 时,一切正常。
这与从 C:/Program Files 目录继承的读/写权限有关吗?我知道我可以通过在 C:/temp 目录或类似的地方创建文件来解决这个问题,但我不想诉诸于此。那么有什么方法可以在我的 C:/Program Files/MyApp 目录中写入/读取文件吗?