为什么此代码会导致错误:access denied
?
public void armazenaPerfil() throws FileNotFoundException, IOException {
FileOutputStream out = new FileOutputStream(this.login + "_perfil.mbk");
ObjectOutputStream objOut = new ObjectOutputStream(out);
objOut.writeObject(this);
System.out.println("Escrevi!");
objOut.close();
}
错误消息:
ric93_perfil.mbk(acess denied)
java.io.FileNotFoundException
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:212)
at java.io.FileOutputStream.<init>(FileOutputStream.java:104)
at br.uefs.ecomp.myBook.model.Perfil.armazenaPerfil(Unknown Source)
答案 0 :(得分:1)
访问被拒绝的问题基本上是操作系统说“你不能写那个”。基本上,操作系统级别的访问控制/权限问题阻止您在指定位置读取或写入文件。
使用相对路径名编写文件时,JVM将尝试将其写入相对于正在运行的应用程序的当前工作目录的位置。将使用什么目录取决于JVM的启动方式,但如果使用java
命令从命令提示符启动,则它将是命令shell的当前目录。
你可以找出当前导演实际使用的是Brendan Long建议的单线:
System.out.println(new File(pathname).getAbsolutePath());
其中pathname
是您尝试读取或写入的文件的路径名。请注意,这实际上并不会检查路径名是否指向现有文件,或者告诉您应该能够创建或打开该文件。它只是 告诉你文件的绝对路径名是什么。