Aza*_*mat 5 java url file download
我正在制作一个将从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");
}
}
Run Code Online (Sandbox Code Playgroud)
那么我该如何解决呢?应该使用其他方式下载吗?
byte
由于以下原因,您将失去所有替补球员
while (fileIn.read() != -1) { //1st read
fileOut.write(fileIn.read()); //2nd read - 1st write
}
Run Code Online (Sandbox Code Playgroud)
你读了两次,只写了一次。
你需要做的是
int x;
while ((x = fileIn.read()) != -1) { //1st read
fileOut.write(x); //1st write
}
Run Code Online (Sandbox Code Playgroud)
这是你的完整代码
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");
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1833 次 |
最近记录: |