我正在制作一个将从URL下载文件的程序。总会开始下载,但未完成。例如,如果文件大小为3
MB,则程序仅下载文件大小的一半,因此我无法打开下载的文件。但是程序说文件成功下载了。
public class FileDownloader {
public static void main (String [] args) throws IOException {
InputStream fileIn;
FileOutputStream fileOut;
Scanner s = new Scanner(System.in);
System.out.println("Enter URL: ");
String urlStr = s.nextLine();
URL url = new URL(urlStr);
URLConnection urlConnect = url.openConnection();
fileIn = urlConnect.getInputStream();
System.out.println("Enter file name: ");
String fileStr = s.nextLine();
fileOut = new FileOutputStream(fileStr);
while (fileIn.read() != -1) {
fileOut.write(fileIn.read());
}
System.out.println("File is downloaded");
}
}
那么我该如何解决呢?应该使用其他方式下载吗?
您byte
由于
while (fileIn.read() != -1) { //1st read
fileOut.write(fileIn.read()); //2nd read - 1st write
}
您正在阅读两次,只写一次。
您需要做的是
int x;
while ((x = fileIn.read()) != -1) { //1st read
fileOut.write(x); //1st write
}
这是您的完整代码
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.Scanner;
public class FileDownloader {
public static void main(String[] args) throws IOException {
InputStream fileIn;
FileOutputStream fileOut;
Scanner s = new Scanner(System.in);
System.out.println("Enter URL: ");
String urlStr = s.nextLine();
URL url = new URL(urlStr);
URLConnection urlConnect = url.openConnection();
fileIn = urlConnect.getInputStream();
System.out.println("Enter file name: ");
String fileStr = s.nextLine();
fileOut = new FileOutputStream(fileStr);
int x;
while ((x = fileIn.read()) != -1) {
fileOut.write(x);
}
System.out.println("File is downloaded");
}
我的python3代码: 它将内容保存在metadat.pdf但那不是pdf的真正内容,它是这个html页面: 任何帮助,我如何才能保存文件的真实内容,而不是这个html?它应该是真正的pdf,当我下载它是jsut这个html页面 更新: 当我使用Python会话时,从服务器的一个NSWER:
大约一个小时后,我无法通过下载URL属性检索文件内容。
我们正计划在google drive上开设一个公司账户,只对公司员工开放。 问题是我们想把几个文件放在我们的驱动器上,并以编程方式下载它们。我们尝试使用google drive API,但下载速度非常低。 是否有任何方法可以使用wget和凭据,从而允许通过URL下载文件。 我们的典型文件大小为50GB。
问题内容: 我正在尝试使用setRequestProperty(“ Range”,“ bytes =” + startbytes +“-” + endbytes);给定下载URL来下载文件的一部分。以下代码片段显示了我要执行的操作。 问题是,正在引发一个异常,该异常表示“建立连接后无法设置请求属性”。请帮助我解决此问题。 问题答案: 假设您正在使用HTTP进行下载,则需要使用HEAD http动词
我正在尝试从我的网站下载一个EXE文件。例如,我访问了Rarlab的网站,下载了一个新安装的64位WinRAR版本(我们都知道这是什么) 无论如何,我上传了64位的“设置”exe文件到我的网站的根文件夹,在那里它很容易达到下载(为了测试的目的)通过任何浏览器进入我的站点,我都可以成功地从rarlabs下载“setup”文件,并像执行任何其他EXE文件一样执行它。 看在上帝的份上,这是我想不明白的地
问题内容: 好吧,这看起来很简单,确实如此。将文件下载到服务器所需要做的就是: 只有一个问题。如果文件很大,例如100mb,该怎么办?然后,您将耗尽内存,并且无法下载文件。 我想要的是一种在下载文件时将文件写入磁盘的方法。这样,我可以下载更大的文件,而不会遇到内存问题。 问题答案: 从PHP 5.1.0开始,支持通过传递流句柄作为参数来逐段编写: 从手册中: 如果 数据 [是第二个参数]是流资源,