java实现下载文件功能
时间: 2023-10-11 14:12:33 浏览: 55
Java实现文件下载功能可以使用Java IO中的InputStream和OutputStream,以及HttpURLConnection类来实现。下面是一个简单的示例代码:
```java
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class DownloadFile {
public static void main(String[] args) {
try {
URL url = new URL("http://example.com/file.pdf");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
int responseCode = httpConn.getResponseCode();
// 判断HTTP响应是否成功
if (responseCode == HttpURLConnection.HTTP_OK) {
String fileName = "";
String disposition = httpConn.getHeaderField("Content-Disposition");
// 如果Content-Disposition头部存在,则从中提取文件名
if (disposition != null) {
int index = disposition.indexOf("filename=");
if (index > 0) {
fileName = disposition.substring(index + 10, disposition.length() - 1);
}
}
// 没有Content-Disposition头部,则从URL中提取文件名
else {
fileName = url.getFile().substring(url.getFile().lastIndexOf("/") + 1, url.getFile().length());
}
// 获取文件输入流和输出流
InputStream inputStream = httpConn.getInputStream();
OutputStream outputStream = new FileOutputStream("C:\\downloads\\" + fileName);
// 将输入流写入输出流,实现文件下载
byte[] buffer = new byte[4096];
int bytesRead = -1;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
// 关闭输入流和输出流
outputStream.close();
inputStream.close();
System.out.println("文件下载完成");
} else {
System.out.println("文件下载失败,HTTP响应码:" + responseCode);
}
httpConn.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
这个示例代码使用HttpURLConnection发送GET请求获取文件输入流,然后将输入流写入文件输出流。通过设置Content-Disposition头部可以获取到文件名,如果无法获取则从URL中提取文件名。文件下载成功后关闭输入流和输出流。