从android下载文件时出现套接字异常

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从android下载文件时出现套接字异常相关的知识,希望对你有一定的参考价值。

我使用下面的代码下载android.code中的zip文件工作正常,但有时下载失败并抛出套接字异常。特别是在互联网连接缓慢的时候(我猜)。我还发布了logcat错误信息的屏幕截图。

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();

答案

connection reset by peer通常意味着你正在与一个认为连接已被关闭的同伴交谈。我不明白为什么在关闭FileOutputStream时会发生这种情况。

此外,在您的代码中但在终结器中不会发生异常。是否有可能在出现问题时,您在上层捕获异常并保持连接和文件打开?放弃的连接由最终结果关闭,但为时已晚。

我不确定它是否能解决问题,但使用finally子句确保文件和连接正确关闭是一个好习惯。

另一答案

日志没有说明代码中发生崩溃的位置。是不是还有一些信息没有出现在你的截图中?

它似乎失败了文件输入流的close方法。你可以简单地用try catch块包围对close()的调用,并将你的流设置为null(如果它在关闭时失败)

以上是关于从android下载文件时出现套接字异常的主要内容,如果未能解决你的问题,请参考以下文章

从活动调用片段方法时出现空指针异常

在使用ViewPager时尝试从其父活动修改片段时出现空指针异常

尝试从 gitpod IDE(ubuntu 服务器)连接到 MySql 数据库时出现套接字异常

从Android中的LinearLayout中删除视图时出现异常

华为机器学习套件下载模型时出现异常

ViewPager - 将数据从片段发送到活动时出现 Android 错误 setCurrentItem(int,boolean)