【问题标题】:Downloaded jpg , apk files never open up but mp3 files open下载的 jpg , apk 文件永远不会打开,但 mp3 文件会打开
【发布时间】:2012-09-06 19:09:08
【问题描述】:

我对这个奇怪的问题感到震惊。

我正在使用以下方法下载文件:

public boolean downloadSection(String link,String fileLocation,long currentlyDownloadedBytes){

     try {

                RandomAccessFile file = new RandomAccessFile(fileLocation, "rw");
                file.seek(currentlyDownloadedBytes+1);

                URL imageUrl = new URL(link);
                HttpURLConnection conn  =(HttpURLConnection)imageUrl.openConnection();
                conn.setRequestProperty("Range", "bytes=" + currentlyDownloadedBytes + "-");
                conn.setConnectTimeout(100000);
                conn.setReadTimeout(100000);
                conn.setInstanceFollowRedirects(true);

                InputStream is=conn.getInputStream();
                byte buffer[]=new byte[1024];;
                while (true) {
                    // Read from the server into the buffer
                    int read = is.read(buffer);
                    if (read == -1) {
                        break;
                    }
                   // Write buffer to file
                    file.write(buffer, 0, read);
                 }

                file.close();
                return true;
                } catch (Exception ex){
                      ex.printStackTrace();
                      return false;
                      }

 } 

当我使用此代码下载 mp3 文件时,下载文件 打开良好,但下载的 android 应用程序(.apk 文件)在打开时会出现 Package Parsing Error 图像永远不会打开

请帮忙 谢谢

【问题讨论】:

    标签: android download random-access download-manager


    【解决方案1】:

    有几件事看起来很奇怪:

    a) 看起来您为这个问题手动添加了方法的签名(因为链接没有类型,所以它甚至不会编译)。

    b) 有两个变量/参数 - alreadyDownloadedBytes 和 currentDownloadedBytes。我认为它是由#a 引起的

    c) 你正在关注

    file.seek(currentlyDownloadedBytes+1);
    

    你应该这样做

    file.seek(currentlyDownloadedBytes);
    

    原因是因为你寻求抵消。因此,例如,如果您只读取 1 个字节,则必须寻求偏移 1(这将是文件中的第二个字节)。

    d) 检查是否有任何异常被抛出和捕获。

    e) 您在哪里更新 currentDownloadedBytes 或 alreadyDownloadedBytes?

    f) 我的最终建议是调试您的应用程序并确保下载整个文件

    【讨论】:

    • 很抱歉我在描述我的代码时犯了愚蠢的错误,因为我手动添加了签名以使代码解释在这里。是的,在寻找时将 1 添加到 currentDownloadedBytes 会导致问题。现在一切都很好:)
    猜你喜欢
    • 2019-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 2013-03-15
    • 1970-01-01
    • 2012-09-19
    相关资源
    最近更新 更多