2012-05-04 89 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()'ing和.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