博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IO Foundation 12 - 下载远程文件到本地
阅读量:5772 次
发布时间:2019-06-18

本文共 2197 字,大约阅读时间需要 7 分钟。

 需求:

在前面一篇文章中我们已经介绍了如何创建一个到远程服务器的连接,那么这里我们就介绍如何通过这个连接来从远程服务器下载文件到本地

 

实现:

源代码附上:

 
  1. /** 
  2.      * This method can do the Unix "scp" work ,it will copy the file from target 
  3.      * server's root to local 
  4.      *  
  5.      * @param localPath 
  6.      *            the path to local file system 
  7.      * @param remotePath 
  8.      *            the path which based on the htdocs of the web server directory 
  9.      * @throws ParameterNullException ,ConfigureSystemException , 
  10.             DownloadFromWebServerException ,NetworkUnreachableException 
  11.      */ 
  12.     public void downloadFileFromWebServer(String remotePath, String localPath) 
  13.             throws ParameterNullException, ConfigureSystemException, 
  14.             DownloadFromWebServerException, NetworkUnreachableException { 
  15.  
  16.         // make sure whether the location to download is not null 
  17.         if ((localPath == null) || (localPath.trim().equals(EMPTY_STRING))) { 
  18.             logger.error(DOWNLOAD_FILE_PATH_TO_NULL); 
  19.             throw new ParameterNullException(DOWNLOAD_FILE_PATH_TO_NULL); 
  20.         } 
  21.  
  22.         // make sure whether the file that we need to download from is not null 
  23.         if ((remotePath == null) || (remotePath.trim().equals(EMPTY_STRING))) { 
  24.             logger.error(DOWNLOAD_FILE_PATH_FROM_NULL); 
  25.             throw new ParameterNullException(DOWNLOAD_FILE_PATH_FROM_NULL); 
  26.         } 
  27.  
  28.         // get the connection object 
  29.         Connection conn = null
  30.  
  31.         try { 
  32.             conn = getWebServerConnectionFactory().getServerMachineConnection(); 
  33.             // create a SCPClient based on the opened connection 
  34.             SCPClient client = getSCPClient(conn) ; 
  35.             // use the scp to copy the file(directory) from remote web server to 
  36.             // local file system 
  37.             client.get(webServerRoot + FORWARD_SLASH + remotePath, localPath); 
  38.         } catch (NetworkUnreachableException ex) { 
  39.             logger.error(FAILED_CONNECTION_TO_WS_SERVER + connFactory.getWebServerName()); 
  40.             throw new DownloadFromWebServerException( 
  41.                     FAILED_CONNECTION_TO_WS_SERVER + connFactory.getWebServerName(), ex); 
  42.         } 
  43.  
  44.         catch (IOException ex) { 
  45.             logger.error(SCP_IO_EXCEPTION); 
  46.             throw new DownloadFromWebServerException(DOWNLOAD_FROM_WS_FAILED, ex); 
  47.         } 
  48.  
  49.         finally { 
  50.             if (conn != null) { 
  51.                 conn.close(); 
  52.             } 
  53.         } 
  54.  
  55.     } 

这个方法很简单,首先从17-25行还是对参数的非空检查,从第32行开始,我们先和以前一样获取ConnectionFactory,进而创建一个ethz.ssh2.Connection对象,然后我们第34行创建一个ScpClient对象,关键在于第35行,我们可以看到,它用了SCPClient的get方法来完成下载操作,它有2个参数,一个是远程目录,一个是本地目录

本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/1120358,如需转载请自行联系原作者
你可能感兴趣的文章
2440A 裸机(Jlink V8+驱动4.9+MDK4.9)总结
查看>>
编写第一个Servlet程序
查看>>
痞子衡嵌入式:串口调试工具Jays-PyCOM诞生记(1)- 环境搭建(Python2.7.14 + pySerial3.4 + wxPython4.0.3)...
查看>>
搭建httpd服务
查看>>
使用sort()时的一点注意
查看>>
11、ViewModelLocator-Prism的MVVM一血
查看>>
SQLite 入门教程(一)基本控制台(终端)命令 (转)
查看>>
[Usaco2006 Dec]Wormholes
查看>>
window编译caffe总结
查看>>
C#之Invoke学习
查看>>
响应式网页设计中的视频处理技巧
查看>>
find the nth digit
查看>>
工作框架各种使用整理---按层次返回相关联的数据
查看>>
诚信、透明、公平、分享
查看>>
高一寒假集训总结
查看>>
bzoj3555[Ctsc2014]企鹅QQ
查看>>
微信分享config:ok 但自定义内容无效
查看>>
OPENGL和DX的不同.
查看>>
Linux下如何删除非空目录
查看>>
原生js模拟jquery写法
查看>>