gpt4 book ai didi

Java 应用程序安装到 C :/Program Files - java. io.FileNotFoundException 时无法写入/读取序列化文件:(访问被拒绝)

转载 作者:行者123 更新时间:2023-12-01 04:46:54 26 4
gpt4 key购买 nike

我的应用程序使用此代码持久保存 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 上)时,上述代码出现以下异常:

Exception storing devices to file: java.io.FileNotFoundException: devices.ser (Access is denied)

但是,当我安装到 C:/MyApp 时,一切正常。

这是否与从 C:/Program Files 目录继承的读/写权限有关?我知道我也许可以通过在 C:/temp 目录或类似的地方创建文件来解决这个问题,但我不想诉诸于此。那么有什么方法可以在我的 C:/Program Files/MyApp 目录中写入/读取文件吗?

最佳答案

从 Windows Vista 开始,未经显式身份验证,任何应用程序都无法访问系统文件夹区域。 (像program-file/window32/等文件夹......)对于已安装的应用程序,身份验证由 windows-installer 完成。

为了能够访问(读/写),您需要以管理员身份运行,或者需要更改这些文件夹的权限(不推荐)

关于Java 应用程序安装到 C :/Program Files - java. io.FileNotFoundException 时无法写入/读取序列化文件:(访问被拒绝),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15680808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com