gpt4 book ai didi

Java读/写访问异常FileNotFoundException(访问被拒绝)

转载 作者:行者123 更新时间:2023-11-29 03:11:18 24 4
gpt4 key购买 nike

这里我有2个方法。

private boolean readData(){
if (!new File(config).exists()) {
return false;
} else {
Hashtable<String, String> data;
FileInputStream fis;
try {
fis = new FileInputStream(config);
ObjectInputStream oin = new ObjectInputStream(fis);
data = (Hashtable<String, String>) oin.readObject();
username = data.get("username");
password = data.get("password");
folder = data.get("folder");
fis.close();
oin.close();
return true;
} catch (FileNotFoundException fnfe) {
return false;
} catch (IOException ioe) {
return false;
} catch (ClassNotFoundException cnfe) {
return false;
}
}
}

private boolean writeData() {
try {
FileOutputStream fos = new FileOutputStream(config);
ObjectOutputStream oos = new ObjectOutputStream(fos);
Hashtable<String, String> data = new Hashtable<>();
sout(username);
data.put("username", username);
data.put("password", password);
data.put("folder", folder);
oos.writeObject(data);
oos.flush();
oos.close();
Runtime.getRuntime().exec("attrib +H " + config);
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}

我在 Stack Overflow 上找不到答案。

顺便说一句 - 异常总是从 writeDataFileOutputStream 中抛出。

附言
我忘了补充。程序首次启动时,成功记录文件数据。同样,它始终可以毫无问题地从文件中读取数据。在我尝试重写此文件时出现问题。

        if(new File(config).canWrite()){
sout("Can write");
} else{
sout("I can't write");
}
writeData();

正在打印我不会写但实际上它有效。我的意思是文件出现,数据写入成功。

最佳答案

你的问题是隐藏的标志。我不知道为什么,但是一旦文件具有隐藏标志,Java 就无法再写入它。

我对其进行了测试,您可以删除该文件(在编写新文件之前),或者如果您想要在事务上更加安全,您可以写入另一个文件并在关闭后用 REPLACE_EXISTING 重命名它。两者都在隐藏文件之上工作。

顺便说一句:我认为使用 Java 序列化来存储如此简单的信息不是一个好主意。你最好使用文本格式。

关于Java读/写访问异常FileNotFoundException(访问被拒绝),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29193965/

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