2012-02-28 24 views
0

私はアンドロイドのために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

+0

素晴らしい!最初の部分を忘れないでください!出力ストリームが終了したら、出力ストリームを閉じたいと思っています。 openFileOutputは、アプリケーションプライベートコンテキストファイルへのアクセスを提供します。 FileInputStream( "/ data/data/ipfile.text")を使用すると、基本的にその方法でファイルを開く権限がありません。 – dymmeh

+0

これを念頭に置いておきます! – tb96

関連する問題