Мое приложение использует этот код для постоянного сохранения 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?