2012-05-04 14 views
2

次のコードセグメントを使用して、Android端末のSDカードにファイルをダウンロードしています。 Wiresharkのトレースでは、ファイルが転送され、FTP転送完了メッセージも表示されます。しかし、SDカードのファイルはゼロサイズです。すべての必要な権限は、マニフェストファイルで設定されます。誰でも助けることができますか? FileOutputStreamでも動作しません。Android FTPダウンロード

 try{ 
     ftpClient.connect(InetAddress.getByName("xxx.xxx.xxx.xxx"));   
     ftpClient.login("xxxx", "xxxxx"); 
     ftpClient.changeWorkingDirectory("xxxx"); 
     ftpClient.setFileType(FTP.BINARY_FILE_TYPE); 
     ftpClient.enterLocalPassiveMode(); 

     //FileOutputStream desFileStream = new FileOutputStream("/sdcard/test25.txt"); 
     BufferedOutputStream desFileStream = new BufferedOutputStream(new FileOutputStream("/sdcard/test25.txt"),8*1024); 

     boolean status=ftpClient.retrieveFile("test.txt", desFileStream); 

     if(status){ 
     Toast toast = Toast.makeText(getApplicationContext(), "Downlaoded", Toast.LENGTH_SHORT); 
     toast.show(); 
     } 

     //desFileStream.flush(); 

     ftpClient.logout(); 
     ftpClient.disconnect(); 

     } 

     catch (IOException e){ 
     Toast toast = Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_SHORT); 
     toast.show(); 
     } 

答えて

2

なぜ.flush()コールがコメントアウトされていますか? .flush()と.close() 'ingを試しましたか? documentationによれば

フラッシュ()

フラッシュし、このストリームのすべての保留中のデータが ターゲットストリームに書き込まされていることを確認します。

+0

フラッシュおよびクローズは、IOExceptionが発生し、両方の。 – Suranga

+0

IOExceptionを投稿してください – Jack

+0

05-04 14:34:46.866:W/System.err(1834):java.io.IOException:デバイスにスペースが残っていません。 SDカードには約7Gの空き容量があり、ターゲットファイルはわずか32 KBです。もっと調べてみましょう。おかげで – Suranga

1

あなたは後に、それへの書き込みを行って出力ストリームをクローズする必要があります。

BufferedOutputStream desFileStream = new BufferedOutputStream(new FileOutputStream("/sdcard/test25.txt"),8*1024); 
boolean status=ftpClient.retrieveFile("test.txt", desFileStream); 
desFileStream.close(); 
+0

私はそれを試しましたが、クローズはIO例外をポップします。どうやらApacheのコモンズコードの中にある。同じように同じように起こった。 – Suranga

関連する問題