java下载文件在文件大小超过8K时不工作?

java下载文件在文件大小超过8K时不工作?,java,Java,我尝试使用下面的代码从url下载pdf文件。当文件大小小于8k时,它可以正常工作,如果文件大小达到8k,它会下载pdf文件,但文件不可读 代码 您可以尝试使用IOUtils.copy(InputStream输入,OutputStream输出) 您可以最小化代码行。 可能与-1重复=(n=in.read(buf)在我看来很奇怪,因为我猜它是c风格的?)为什么不呢(n=in.read(buf)!=-1我用你的代码下载了(424k)它工作得很好。如果你的URL需要某种重定向,你最终会下载一个html页

我尝试使用下面的代码从url下载pdf文件。当文件大小小于8k时,它可以正常工作,如果文件大小达到8k,它会下载pdf文件,但文件不可读

代码


您可以尝试使用IOUtils.copy(InputStream输入,OutputStream输出) 您可以最小化代码行。

可能与-1重复=(n=in.read(buf)在我看来很奇怪,因为我猜它是c风格的?)为什么不呢(n=in.read(buf)!=-1我用你的代码下载了(424k)它工作得很好。如果你的URL需要某种重定向,你最终会下载一个html页面而不是pdf。因此,请检查你保存的文件,检查它是否不是html文件。你说得对,Leo,昨晚我在家尝试了相同的代码,当时我公司的所有活动都不活跃,我的代码在r中下载了pdf文件ight格式。当我尝试使用之前的一个url时,它是一个html文件。因此,解释可能是网络活动?或者什么?它如何重定向?谢谢,这样更容易,但为什么它会解决他/她的问题?或者,使用并避免依赖第三方库。我忘记解释如何获取url,这是在selenium测试,我点击一个链接下载文件。这里缺少的代码是:driver.findElement(By.linkText(DownloadPDFlink)).click();然后我尝试使用System.out.println(“HREF=”+driver.findElement(By.linkText(downloadpf)).getAttribute(“HREF”);在使用thr url对象下载文件之后。
 InputStream in = new BufferedInputStream(url.openStream());
                 ByteArrayOutputStream out = new ByteArrayOutputStream();
                 byte[] buf = new byte[1024];
                 int n = 0;
                 while (-1!=(n=in.read(buf)))
                 {
                    out.write(buf, 0, n);
                 }
                 out.close();
                 in.close();
                 byte[] response = out.toByteArray();

                 FileOutputStream fos = new FileOutputStream(new File("C:\\temp\\TEST.pdf"));
                 fos.write(response);
                 fos.close();
                 System.out.println("Download Finished");