117.info
人生若只如初见

Java实现下载文件的6种方式

  1. 使用URL类的openStream()方法下载文件:
URL url = new URL(fileUrl);
InputStream inputStream = url.openStream();
FileOutputStream outputStream = new FileOutputStream(savePath);
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
outputStream.close();
inputStream.close();
  1. 使用URLConnection类下载文件:
URL url = new URL(fileUrl);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
int responseCode = httpConn.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
InputStream inputStream = httpConn.getInputStream();
FileOutputStream outputStream = new FileOutputStream(savePath);
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
outputStream.close();
inputStream.close();
}
httpConn.disconnect();
  1. 使用Apache HttpClient库下载文件:
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
HttpGet httpGet = new HttpGet(fileUrl);
CloseableHttpResponse response = httpClient.execute(httpGet);
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream inputStream = entity.getContent();
FileOutputStream outputStream = new FileOutputStream(savePath);
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
outputStream.close();
inputStream.close();
}
httpClient.close();
response.close();
  1. 使用Java NIO下载文件:
URL url = new URL(fileUrl);
ReadableByteChannel channel = Channels.newChannel(url.openStream());
FileOutputStream outputStream = new FileOutputStream(savePath);
outputStream.getChannel().transferFrom(channel, 0, Long.MAX_VALUE);
outputStream.close();
channel.close();
  1. 使用Java IO和BufferedStream下载文件:
URL url = new URL(fileUrl);
BufferedInputStream inputStream = new BufferedInputStream(url.openStream());
FileOutputStream outputStream = new FileOutputStream(savePath);
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
outputStream.close();
inputStream.close();
  1. 使用Apache Commons IO库下载文件:
URL url = new URL(fileUrl);
FileUtils.copyURLToFile(url, new File(savePath));

请注意,以上代码可能需要处理异常或添加进一步的逻辑来完善下载过程。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe937AzsLBg5eAVc.html

推荐文章

  • java构造方法有哪些特点

    以下是Java构造方法的特点: 构造方法的名称必须与类的名称完全相同。 构造方法没有返回类型,包括void类型。 构造方法在类被实例化时自动调用,用于初始化对象的...

  • java方法重写和重载的区别是什么

    Java方法重写(Override)和重载(Overload)是面向对象编程中的两个重要概念,它们的区别如下: 定义:重写是指在子类中重新实现父类中已存在的方法,方法名、参...

  • java怎么让编译不报错

    要让Java编译不报错,你需要确保以下几点: 语法错误:检查代码中的拼写错误、缺少分号、括号不匹配等语法问题,并进行修正。 类型错误:确保变量的类型匹配,比...

  • java中Pattern.compile()报错问题怎么解决

    要解决Java中Pattern.compile()方法报错的问题,可以遵循以下步骤: 检查正则表达式是否正确:首先,确保你提供的正则表达式语法是正确的。你可以使用在线正则表...

  • c++中ADO添加记录的方法是什么

    在C++中使用ADO(ActiveX Data Objects)库来添加记录,需要以下几个步骤:1. 引入头文件和命名空间: #include #import "C:\Program Files\Common Files\System...

  • 云服务器除了搭建网站还可以干什么

    云服务器除了搭建网站,还可以用于以下用途:1. 应用托管:可以将应用程序部署到云服务器上,提供稳定可靠的运行环境。2. 数据存储:可以在云服务器上存储和管理...

  • ShellExecute函数返回值是什么

    ShellExecute函数的返回值是一个HINSTANCE类型的值,它表示执行操作的实例句柄。如果函数执行成功,返回值为大于32的值,其中包括HINSTANCE类型的实例句柄。如果...

  • django ObjectDoesNotExist 和 DoesNotExist的用法

    在Django中,ObjectDoesNotExist是异常类,用于表示查询对象不存在的情况。它是django.core.exceptions模块中的一个子类。
    通常情况下,当在查询数据时,如...