2013-12-09 2 views
0

Я использую приведенный ниже код для загрузки zip-файла в android.code, отлично работает, но иногда загрузка завершается с ошибкой и вызывает исключение сокета. особенно при медленном подключении к Интернету (я думаю) .i также разместили снимки экрана сообщения об ошибке logcat.Исключение сокета при загрузке файлов с android

int count;

 URL url = new URL(URL); 
     URLConnection conexion = url.openConnection(); 
     conexion.connect(); 

     int lenghtOfFile = conexion.getContentLength(); 
     //Log.e("ANDRO_ASYNC", "Lenght of file: " + "="+lenghtOfFile); 

     InputStream input = new BufferedInputStream(url.openStream()); 
     OutputStream output = new FileOutputStream(StorezipFileLocation); 

     byte data[] = new byte[lenghtOfFile]; 

     long total = 0; 

     while ((count = input.read(data)) != -1) { 
      total += c![enter image description here][1]ount; 
      publishProgress(""+(int)((total*100)/lenghtOfFile)); 
      output.write(data, 0, count); 
     } 

     output.flush(); 
     output.close(); 
     input.close(); 

enter image description here

ответ

0

Журнал не говорит, где происходит сбой в коде. Нет ли какой-либо дополнительной информации, которая не отображается на вашем скриншоте?

Похоже, что он не работает по методу close вашего потока ввода файла. Вы можете просто окружить вызовы, чтобы закрыть() с помощью блока catch try и установить поток в null (если он не завершился при закрытии)

+0

Я получаю эту ошибку только от logcat – Ruban

+0

Если ошибка возникает при выполнении строки «close()», то загрузка должна быть завершена. Вы пробовали просто поймать выход? В противном случае вы знаете, где происходит ошибка? при ожидании данных? –

1

connection reset by peer обычно означает, что вы разговариваете с одноранговым узлом, который считает, что соединение уже были закрыты. Я не понимаю, почему это происходит при закрытии FileOutputStream.

Кроме того, исключение не происходит в коде, но в финализаторе. Возможно ли, что когда что-то пойдет не так, вы поймаете исключение на верхнем уровне и оставьте соединение и файл открытым? Отключенное соединение закрывается финалистом, но уже слишком поздно.

Я не уверен, что он решает проблему, но рекомендуется использовать предложение finally, чтобы убедиться, что файлы и соединения правильно закрыты.

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