2012-06-17 125 views
-3

爲什麼此代碼會導致錯誤:access deniedFileOutputStream問題

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

您能否包含實際的錯誤信息? –

+1

你有權寫入該文件嗎? – Jivings

+0

如果您遇到異常情況,請在問題主體中添加更多異常輸出。 – pb2q

回答

1

訪問被拒絕的問題基本操作系統說:「你不準寫」。基本上,操作系統級訪問控制/權限問題阻止您在指定位置讀取或寫入文件。

當您使用相對路徑名編寫文件時,JVM將嘗試將其寫入相對於正在運行的應用程序當前工作目錄的位置。什麼目錄取決於JVM的啓動方式,但如果使用java命令從命令提示符啓動,它將是命令shell的當前目錄。

你可以找出當前主任實際上是用一行代碼布倫丹龍說:

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

其中pathname是你試圖讀取或寫入的文件的路徑名。請注意,這實際上並未檢查路徑名是否指向現有文件,或者告訴您應該能夠創建或打開文件。它只是告訴你文件的絕對路徑名是