针对给定的oss地址下载到本地
public static void getPicbyClient(String ossUrl , String localFilePath) throws Exception {
// 创建一个默认的CloseableHttpClient实例。HttpClient是Apache HttpClient库的核心类,用于发送HTTP请求
CloseableHttpClient httpclient = HttpClients.createDefault();
ossUrl = ossUrl.trim().replaceAll("^\"|\"$", "");
try {
//创建一个新的HttpGet对象,用于执行HTTP GET请求。
HttpGet httpGet = new HttpGet(ossUrl);
CloseableHttpResponse response = httpclient.execute(httpGet);
try {
//执行HTTP GET请求并获取响应
HttpEntity entity = response.getEntity();
if (entity != null) {
//如果HttpEntity不为空,获取其内容作为InputStream
try (InputStream inputStream = entity.getContent()) {
// 创建一个新的FileOutputStream,用于将数据写入本地文件。
FileOutputStream outputStream = new FileOutputStream(new File(localFilePath));
//创建一个1024字节的缓冲区,并在循环中读取输入流并写入输出流,直到没有更多的数据可读。
int read;
byte[] bytes = new byte[1024];
while ((read = inputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
outputStream.close();
}
}
// 消耗并关闭HttpEntity。
EntityUtils.consume(entity);
} finally {
response.close();
}
} finally {
httpclient.close();
}
}
这段代码适用于从任何HTTP或HTTPS URL下载文件。它不仅限于OSS URL,只要URL指向的是一个可以下载的文件,这段代码就可以工作。
这段代码使用Apache HttpClient库,这是一个强大的库,可以用于发送HTTP请求和处理HTTP响应。它提供了很多高级特性,比如连接管理、cookie管理、SSL/TLS定制等。
这段代码使用了HTTP GET请求来下载文件,这是最常见的下载文件的方法。然后,它将文件内容保存到本地文件系统。
这段代码的一个优点是它可以处理大文件,因为它使用了缓冲区和循环来读取和写入文件,而不是一次性读取或写入整个文件。这意味着它可以下载任何大小的文件,只要有足够的磁盘空间。
然而,这段代码也有一些限制。例如,它不支持断点续传,如果下载过程中出现问题,它将无法恢复。此外,它也不支持多线程下载,这意味着下载速度可能不如一些专门的下载工具。