FileOutputStream的问题

时间:2012-06-17 23:45:22

标签: java io

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

1 个答案:

答案 0 :(得分:1)

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

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

你可以找出当前导演实际使用的是Brendan Long建议的单线:

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

其中pathname是您尝试读取或写入的文件的路径名。请注意,这实际上并不会检查路径名是否指向现有文件,或者告诉您应该能够创建或打开该文件。它只是 告诉你文件的绝对路径名是什么。