-3

为什么此代码会导致错误: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)
4

1 回答 1

1

拒绝访问的问题基本上是操作系统说“你不能写那个”。基本上,操作系统级别的访问控制/权限问题会阻止您在指定位置读取或写入文件。

当您使用相对路径名写入文件时,JVM 将尝试将其写入相对于正在运行的应用程序当前工作目录的位置。哪个目录取决于 JVM 的启动方式,但如果您使用java命令从命令提示符启动,它将是命令 shell 的当前目录。

您可以了解当前导演实际使用的是 Brendan Long 建议的单线:

System.out.println(new File(pathname).getAbsolutePath());

pathname您尝试读取或写入的文件的路径名在哪里。请注意,这实际上并没有检查路径名是否引用了现有文件,或者告诉您应该能够创建或打开该文件。它只是告诉您文件的绝对路径名是什么

于 2012-06-18T01:17:08.133 回答