以下是Java下载文件的4种方式总结的详细攻略:
一、通过URL类下载文件
Java中可以通过URL类来下载远程文件,具体步骤如下:
- 创建一个URL对象,指定远程文件的URL地址;
URL url = new URL("http://example.com/file/file.txt");
- 打开URL连接;
URLConnection conn = url.openConnection();
- 获取输入流,读取远程文件;
InputStream in = conn.getInputStream();
- 创建一个本地文件输出流,并写入读取到的数据;
OutputStream out = new FileOutputStream("C:\\file.txt");
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
- 最后关闭输入输出流;
in.close();
out.close();
以上也可以封装成一个方法,方便调用。示例代码如下:
public static void downloadFileByURL(String fileURL, String saveDir) throws IOException {
URL url = new URL(fileURL);
URLConnection conn = url.openConnection();
InputStream in = conn.getInputStream();
File file = new File(saveDir);
if (!file.exists()) {
file.mkdirs();
}
String fileName = fileURL.substring(fileURL.lastIndexOf("/") + 1);
FileOutputStream out = new FileOutputStream(saveDir + File.separator + fileName);
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
in.close();
out.close();
}
二、通过HttpClient下载文件
HttpClient是一款开源的HTTP客户端库,可以发送HTTP请求,并且支持HTTPS、代理、Cookie等特性。可以通过HttpClient下载远程文件,具体步骤如下:
- 创建一个HttpClient对象;
CloseableHttpClient httpClient = HttpClients.createDefault();
- 创建一个HttpGet对象,指定远程文件的URL地址;
HttpGet httpGet = new HttpGet("http://example.com/file/file.txt");
- 执行HttpGet请求,获取HttpResponse响应;
CloseableHttpResponse httpResponse = httpClient.execute(httpGet);
- 获取响应实体,读取远程文件;
HttpEntity entity = httpResponse.getEntity();
InputStream in = entity.getContent();
- 创建一个本地文件输出流,并写入读取到的数据;
OutputStream out = new FileOutputStream("C:\\file.txt");
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
- 最后关闭输入输出流、HttpResponse、HttpClient;
in.close();
out.close();
httpResponse.close();
httpClient.close();
以上也可以封装成一个方法,方便调用。示例代码如下:
public static void downloadFileByHttpClient(String fileURL, String saveDir) throws IOException {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(fileURL);
CloseableHttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity entity = httpResponse.getEntity();
InputStream in = entity.getContent();
File file = new File(saveDir);
if (!file.exists()) {
file.mkdirs();
}
String fileName = fileURL.substring(fileURL.lastIndexOf("/") + 1);
OutputStream out = new FileOutputStream(saveDir + File.separator + fileName);
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
in.close();
out.close();
httpResponse.close();
httpClient.close();
}
三、通过FileUtils下载文件
FileUtils是Apache Commons IO的一部分,是一款常用的Java IO工具类库,可以简化一些IO操作,其中包括下载文件的功能。具体步骤如下:
- 指定远程文件的URL地址;
String fileURL = "http://example.com/file/file.txt";
- 指定本地文件保存位置;
String saveDir = "C:\\";
- 调用FileUtils.copyURLToFile方法,下载远程文件并保存到本地;
FileUtils.copyURLToFile(new URL(fileURL), new File(saveDir + File.separator + fileName));
以上也可以封装成一个方法,方便调用。示例代码如下:
public static void downloadFileByFileUtils(String fileURL, String saveDir) throws IOException {
File file = new File(saveDir);
if (!file.exists()) {
file.mkdirs();
}
String fileName = fileURL.substring(fileURL.lastIndexOf("/") + 1);
FileUtils.copyURLToFile(new URL(fileURL), new File(saveDir + File.separator + fileName));
}
四、通过Jsoup下载文件
Jsoup是一款Java的HTML解析器,可以解析HTML文档、从中提取数据、修改数据内容等。在Jsoup中也有下载文件的功能,具体步骤如下:
- 创建一个Connection对象,指定远程文件的URL地址;
Connection conn = Jsoup.connect("http://example.com/file/file.txt");
- 执行连接,获取响应;
Response response = conn.execute();
- 获取响应体,读取远程文件;
byte[] bytes = response.bodyAsBytes();
- 创建一个本地文件输出流,并写入读取到的数据;
OutputStream out = new FileOutputStream("C:\\file.txt");
out.write(bytes);
- 最后关闭输入输出流;
out.close();
以上也可以封装成一个方法,方便调用。示例代码如下:
public static void downloadFileByJsoup(String fileURL, String saveDir) throws IOException {
Connection conn = Jsoup.connect(fileURL);
Response response = conn.execute();
byte[] bytes = response.bodyAsBytes();
File file = new File(saveDir);
if (!file.exists()) {
file.mkdirs();
}
String fileName = fileURL.substring(fileURL.lastIndexOf("/") + 1);
OutputStream out = new FileOutputStream(saveDir + File.separator + fileName);
out.write(bytes);
out.close();
}
以上就是Java下载文件的四种方式总结的详细攻略,希望能够帮助到你。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java下载文件的4种方式总结 - Python技术站