2012-02-28 67 views
0

我正在寫一個android應用程序,它必須從FTP服務器下載文件。 似乎我可以從FTP服務器讀取文件沒有任何問題,但是當我嘗試打開它時,應用程序會引發以下錯誤:沒有這樣的文件名或目錄。Android:沒有這樣的文件名或目錄

代碼:

FTPClient ftp = new FTPClient ; // The ftpclient of apache commons 
// all the code for connecting to the server 

FileOutputStream fOut = openFileOutput("ipfile.text" , Context.MODE_WORLD_WRITEABLE) ; 
    ftp.retrieveFile("ip.text" , fOut) ; 



    Log.v("As" , "Read file with succes from drivehq") ; 

    String helpStr = "ERROR" ; 
    byte[] inputBuffer = new byte [1024] ; 

    try{ 
     FileInputStream fis = new FileInputStream("/data/data/ipfile.text") ; 
     fis.read(inputBuffer) ; 
     fis.close() ; 
     helpStr = new String (inputBuffer) ; 
     Log.v("As" , "Read file from " + helpStr) ; 



    } 
    catch(Exception e) { 
     Log.v("As" ," Unable to read the ip-file " + e.getMessage()) ; 
    } 

的logcat的:

02-28 21:31:38.741: V/As(3992): Logged on with success to drivehq 
02-28 21:31:38.911: V/As(3992): Changed working directory on drivehq 
02-28 21:31:39.972: V/As(3992): Read file with succes from drivehq 
02-28 21:31:39.972: V/As(3992): Unable to read the ip-file ipfile.text (No such file or directory) 

謝謝,湯姆

回答

1

嘗試關閉FileOutputStream中 「FOUT」

可能流已鎖定該文件引起儘管它已被創建,但無法讀取該文件。

FileOutputStream fOut = openFileOutput("ipfile.text" , Context.MODE_WORLD_WRITEABLE) ; 
ftp.retrieveFile("ip.text" , fOut) ; 
fOut.flush(); 
fOut.close(); 

此外,您應該以類似的方式來打開你的文件,你打開使用

FileInputStream fis = openFileOutput("ipfile.text"); 

這實際上可能是你讀的是不工作,而不是上述原因的原因輸出文件。

+0

謝謝!這確實是最後的原因:) – tb96 2012-02-28 21:12:27

+0

太棒了!不要忘記第一部分!一旦完成了輸出流,你一定要關閉輸出流。 openFileOutput使您可以訪問應用程序的私有上下文文件。使用FileInputStream(「/ data/data/ipfile.text」)將不起作用,因爲它基本上沒有權限以這種方式打開文件 – dymmeh 2012-02-28 21:17:19

+0

好的,我會牢記這一點! – tb96 2012-03-03 18:08:19

相關問題