这是下载java文件的最佳方式吗?

这是下载java文件的最佳方式吗?,java,download,Java,Download,我正在调试我的应用程序,它似乎有点慢。我想知道是不是我的互联网。这是下载java文件的正确方法吗?文件大小为26mb。这肯定不是最好的方式。丢弃所有异常的代码很少是做任何事情的最佳方式。您可能还不考虑USI G字符串作为参数。URI和文件是很好的选择 如果您想复制流,transferTo是一个好方法 您可以省略BufferedOutputStream,因为您自己已经在使用缓冲区了。但这不会有太大的区别 可能会或可能不会有很大区别的是流而不是流。您应该始终查看诸如Apache之类的库。他们为你做了

我正在调试我的应用程序,它似乎有点慢。我想知道是不是我的互联网。这是下载java文件的正确方法吗?文件大小为26mb。

这肯定不是最好的方式。丢弃所有异常的代码很少是做任何事情的最佳方式。您可能还不考虑USI G字符串作为参数。URI和文件是很好的选择

如果您想复制流,transferTo是一个好方法

您可以省略BufferedOutputStream,因为您自己已经在使用缓冲区了。但这不会有太大的区别


可能会或可能不会有很大区别的是流而不是流。

您应该始终查看诸如Apache之类的库。他们为你做了所有艰苦的工作:

我用

很多

如果您知道您有一个URL,请查看:

作为替代方案,仅供参考,您可以对其进行调查。此框架将允许您下载文件,即使在有浏览器重定向的站点上也是如此


当您从web浏览器下载同一个文件时会发生什么情况?开始喜欢Java了:这样一种精确且不冗长的语言CopyUrlToFile比streams更好?还是流本身?使用默认编码是一个糟糕的想法,尤其是在这种情况下。这意味着数据将以不同的方式被破坏,这取决于程序运行的平台。你可以使用更大的缓冲区,例如8192。我问这个问题已经很久了。谢谢你的回答,詹姆斯。我记得我走的是阿帕奇路。我记得最近查看了htmlunit,发现它在页面上执行了javascript,非常棒。很高兴听到你取得了一些进步。顺便问一下,你有没有做过文件完整性测试和处理下载中断之类的工作?此外,这可能会引起兴趣:我没有。我记得我试图停止/恢复下载,有人建议我查看jdownloader源代码,但我从来没有这样做。谢谢你提供的资源。
public void download(String url, String destination) {
        BufferedOutputStream localBufferedOutputStream = null;
        URLConnection localURLConnection = null;
        InputStream localInputStream = null;
        try {
            URL localURL = new URL(url);

            localBufferedOutputStream = new BufferedOutputStream(new FileOutputStream(destination));
            localURLConnection = localURL.openConnection();
            localInputStream = localURLConnection.getInputStream();

            byte[] arrayOfByte = new byte[1024];
            int i;
            while ((i = localInputStream.read(arrayOfByte)) != -1) {
                localBufferedOutputStream.write(arrayOfByte, 0, i);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            try {
                if (localInputStream != null) {
                    localInputStream.close();
                }
                if (localBufferedOutputStream != null) {
                    localBufferedOutputStream.close();
                }
            } catch (IOException localIOException3) {
                System.out.println(localIOException3);
            }
        }
    }
static String   readFileToString(File file)
          Reads the contents of a file into a String using the default encoding for the VM.