java - 我用 Java 做了一个简单的下载管理器,我的下载管理器可以下载但不能从网上下载大文件

标签 java download-manager

我无法从网上下载大文件(超过 1 MB 的文件)。但是,我的程序能够从本地主机下载那些大文件。下载大文件还有什么我需要做的吗? 这是代码片段:

 try {

        //connection to the remote object referred to by the URL.
        url = new URL(urlPath);
        // connection to the Server
        conn = (HttpURLConnection) url.openConnection();

        // get the input stream from conn
        in = new BufferedInputStream(conn.getInputStream());

        // save the contents to a file
        raf = new RandomAccessFile("output","rw");


        byte[] buf = new byte[ BUFFER_SIZE ];
        int read;

        while( ((read = in.read(buf,0,BUFFER_SIZE)) != -1) )
    {

            raf.write(buf,0,BUFFER_SIZE);
    }

    } catch ( IOException e ) {

    }
    finally {

    }

提前致谢。

最佳答案

您忽略了实际读取的字节数:

while( ((read = in.read(buf,0,BUFFER_SIZE)) != -1) )
{
    raf.write(buf,0,BUFFER_SIZE);
}

您的write 调用总是 写入整个缓冲区,即使您没有用read 调用填充它。你想要:

while ((read = in.read(buf, 0, BUFFER_SIZE)) != -1)
{
    raf.write(buf, 0, read);
}

关于java - 我用 Java 做了一个简单的下载管理器,我的下载管理器可以下载但不能从网上下载大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7841893/

相关文章:

swift - 如何删除进度条圆圈中的 CAShapeLayer

android - java.net.UnknownServiceException : CLEARTEXT communication to t. main.wedeep.com.cn 网络安全策略不允许

javascript - JTEXTPANE 多彩前景设置

java - 选中时显示 JTable 行的信息

PHP - 保护数字下载

java - 如何使用 angular.js 和 java 使用大文件逐 block 下载大文件

android - 使用 Android 中的下载管理器下载后识别特定文件

java - pom.xml 中的错误

java - Android Studio,添加 Java 支持

java - 管理 Activity 加载时间的良好做法