本文共 2725 字,大约阅读时间需要 9 分钟。
一个简单的 Java 流下载函数
import java.io.BufferedInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.net.MalformedURLException;import java.net.URL;以下是一个简单的 Java 代码示例,用于通过网络 URL 下载文件到本地指定路径。
程序逻辑依赖于 Java 的 IO 流机制,通过 BufferedInputStream 从网络流读取数据并写入本地文件中。
public static void main(String[] args) { try { SaveURL("c:/temp/004.pdf", "http://download.localhost/%e5%b0%81%e9%9d%a2.pdf"); } catch (IOException e) { e.printStackTrace(); } }功能说明:
public static void SaveURL(final String strFileName, final String strURL) throws MalformedURLException, IOException { BufferedInputStream bufferedInputStream = null; FileOutputStream fileOutputStream = null; int count = -1; try { bufferedInputStream = new BufferedInputStream(new URL(strURL).openStream()); fileOutputStream = new FileOutputStream(strFileName); // 读取流数据 final int buffer = 1024; final byte data[] = new byte[buffer]; while ((count = bufferedInputStream.read(data, 0, buffer)) != -1) { fileOutputStream.write(data, 0, count); } } catch (Exception e) { } finally { if (bufferedInputStream != null) { bufferedInputStream.close(); } if (fileOutputStream != null) { fileOutputStream.close(); } } }另一种实现方法是通过 Apache HttpClient 的 HttpComponents 库:
public Boolean getFile(final String strRemoteFile, String strLocalFile) { Boolean result = null; try { CloseableHttpClient httpclient = HttpClients.createDefault(); HttpGet httpget = new HttpGet(strRemoteFile); HttpResponse response = httpclient.execute(httpget); HttpEntity entity = response.getEntity(); InputStream inputStream = entity.getContent(); File file = new File(strLocalFile); try { FileOutputStream fileOutputStream = new FileOutputStream(file); int l = -1; byte[] tmp = new byte[1024]; while ((l = inputStream.read(tmp)) != -1) { fileOutputStream.write(tmp, 0, l); } fileOutputStream.flush(); fileOutputStream.close(); result = true; } catch (IOException e) { e.printStackTrace(); result = false; } finally { inputStream.close(); } httpclient.close(); } catch (IOException e) { e.printStackTrace(); result = false; } return result; }上述代码实现了文件从网络 URL 下载到本地文件系统的功能。第一种实现直接使用 Java 的 IO 流机制,而第二种实现则基于 Apache HttpClient 的 HttpComponents 库,提供了更全面的 HTTP 请求和状态管理功能。
需要注意的是,在实际应用中,建议对异常进行合理捕获和处理,并根据具体需求选择合适的下载策略。
转载地址:http://zhvez.baihongyu.com/