2012-05-04 5 views
2

Я использую следующий сегмент кода для загрузки файла на SD-карту телефона Android. В трассе 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 КБ. Позвольте мне проверить еще раз. Спасибо – 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

Смежные вопросы