getContentLength не работает на Android для URL-адреса FTP

Следующий код печатает длину -1 для размера файла на Android, но отлично работает на рабочем столе JAVA. Я использую Андроид 2.2.

URL url1 = null;
URLConnection uconn = null;
try {
     url1 = new URL("ftp://FTPHOST/file.zip");
     uconn = url1.openConnection();
     uconn.setDoInput(true);  
     int len= uconn.getContentLength();
     int headersize = uconn.getHeaderFields().size();
     System.out.println("******************************* "+len);
     } catch (Exception e) {     
        e.printStackTrace();
     } 
return null;

Дайте мне знать, есть ли обходной путь в Android, чтобы получить размер файла.


person tumbudu    schedule 05.05.2011    source источник
comment
Вы уверены, что URL правильный и файл существует?   -  person Pasha    schedule 05.05.2011
comment
да .. код отлично работает в случае Java на рабочем столе ..   -  person tumbudu    schedule 05.05.2011
comment
Может быть, вы забыли добавить разрешение?   -  person Pasha    schedule 06.05.2011


Ответы (1)


Код подключения URL-адреса платформы Android использует другую базу (HTTP-клиент Apache) под капотом, а не реализацию Oracle JVM. HTTP-клиент Apache изначально не поддерживает загрузку по FTP, как это делает настольная JVM.

Настольная JVM использует класс, который исторически назывался sun.net.ftp.FtpClient для этой функции FTP. Ни один из классов солнца не доступен на Android, так что это не работает. Вам понадобится собственный FTP-клиент.

person Femi    schedule 05.05.2011