首页 课程 师资 教程 报名

Java从服务器下载文件的示例

  • 2022-04-01 10:27:38
  • 2688次 动力节点

1.基础知识

当我们想要下载网站上的某个资源时,我们会获取一个url,它是服务器定位资源的一个描述,下载的过程有如下几步:

(1)客户端发起一个url请求,获取连接对象。

(2)服务器解析url,并且将指定的资源返回一个输入流给客户。

(3)建立存储的目录以及保存的文件名。

(4)输出了写数据。

(5)关闭输入流和输出流。

2.实现代码的方法

/** 
 * @功能 下载临时素材接口 
 * @param filePath 文件将要保存的目录 
 * @param method 请求方法,包括POST和GET 
 * @param url 请求的路径 
 * @return 
 */  
public static File saveUrlAs(String url,String filePath,String method){ 
   //System.out.println("fileName---->"+filePath); 
   //创建不同的文件夹目录 
   File file=new File(filePath); 
   //判断文件夹是否存在 
   if (!file.exists()) 
  { 
    //如果文件夹不存在,则创建新的的文件夹 
     file.mkdirs(); 
  } 
   FileOutputStream fileOut = null; 
   HttpURLConnection conn = null; 
   InputStream inputStream = null; 
   try
  { 
     // 建立链接 
     URL httpUrl=new URL(url); 
     conn=(HttpURLConnection) httpUrl.openConnection(); 
     //以Post方式提交表单,默认get方式 
     conn.setRequestMethod(method); 
     conn.setDoInput(true);  
     conn.setDoOutput(true); 
     // post方式不能使用缓存  
     conn.setUseCaches(false); 
     //连接指定的资源  
     conn.connect(); 
     //获取网络输入流 
     inputStream=conn.getInputStream(); 
     BufferedInputStream bis = new BufferedInputStream(inputStream); 
     //判断文件的保存路径后面是否以/结尾 
     if (!filePath.endsWith("/")) {   
       filePath += "/";   
       } 
     //写入到文件(注意文件保存路径的后面一定要加上文件的名称) 
     fileOut = new FileOutputStream(filePath+"123.png"); 
     BufferedOutputStream bos = new BufferedOutputStream(fileOut);        
     byte[] buf = new byte[4096]; 
     int length = bis.read(buf); 
     //保存文件 
     while(length != -1) 
     { 
       bos.write(buf, 0, length); 
       length = bis.read(buf); 
     } 
     bos.close(); 
     bis.close(); 
     conn.disconnect(); 
  } catch (Exception e) 
  { 
     e.printStackTrace(); 
     System.out.println("抛出异常!!"); 
  }      
   return file;     
 }

3.代码测试类(主函数)

/** 
   * @param args 
   */
  public static void main(String[] args) 
  { 
    String photoUrl = "https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png";                   
    String fileName = photoUrl.substring(photoUrl.lastIndexOf("/"));  
    //System.out.println("fileName---->"+fileName); 
    String filePath = "d:";  
    File file = saveUrlAs(photoUrl, filePath + fileName,"GET");  
    System.out.println("Run ok!/n<BR>Get URL file " + file);    
  } 

 

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交