博客
关于我
一个简单的 java 文件流下载函数
阅读量:700 次
发布时间:2019-03-17

本文共 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/

你可能感兴趣的文章
OpenCV与AI深度学习 | 基于OpenCV实现模糊检测 / 自动对焦
查看>>
OpenCV与AI深度学习 | 基于Python和OpenCV将图像转为ASCII艺术效果
查看>>
OpenCV与AI深度学习 | 基于PyTorch实现Faster RCNN目标检测
查看>>
OpenCV与AI深度学习 | 基于PyTorch语义分割实现洪水识别(数据集 + 源码)
查看>>
OpenCV与AI深度学习 | 基于YOLO11的车体部件检测与分割
查看>>
OpenCV与AI深度学习 | 基于YoloV11自定义数据集实现车辆事故检测(有源码,建议收藏!)
查看>>
OpenCV与AI深度学习 | 基于YOLOv8 + BotSORT实现球员和足球检测与跟踪 (步骤 + 源码)
查看>>
OpenCV与AI深度学习 | 基于YOLOv8实现高级目标检测和区域计数
查看>>
VS2003 Front Page Server Extension
查看>>
OpenCV与AI深度学习 | 基于YOLOv8的停车对齐检测
查看>>
OpenCV与AI深度学习 | 基于YoloV8的药丸/片剂类型识别
查看>>
OpenCV与AI深度学习 | 基于YOLO和EasyOCR从视频中识别车牌
查看>>
OpenCV与AI深度学习 | 基于图像处理的火焰检测算法(颜色+边缘)
查看>>
OpenCV与AI深度学习 | 基于拉普拉斯金字塔实现图像融合(步骤 + 代码)
查看>>
OpenCV与AI深度学习 | 基于改进YOLOv8的景区行人检测算法
查看>>
OpenCV与AI深度学习 | 基于机器视觉的磁瓦表面缺陷检测方案
查看>>
OpenCV与AI深度学习 | 基于深度学习的轮胎缺陷检测系统
查看>>
OpenCV与AI深度学习 | 如何使用YOLO-World做目标检测
查看>>
OpenCV与AI深度学习 | 如何使用YOLOv9分割图像中的对象
查看>>