IO Foundation 12 - 下载远程文件到本地

简介:

 需求:

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

 

实现:

源代码附上:

 
 
  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,如需转载请自行联系原作者

目录
相关文章
|
1天前
|
Linux 数据处理 C语言
【Linux】基础IO----系统文件IO & 文件描述符fd & 重定向(下)
【Linux】基础IO----系统文件IO & 文件描述符fd & 重定向(下)
14 0
|
1天前
|
Linux C语言 C++
【Linux】基础IO----系统文件IO & 文件描述符fd & 重定向(上)
【Linux】基础IO----系统文件IO & 文件描述符fd & 重定向(上)
18 0
|
28天前
|
C++
Open3D File Io 文件IO
Open3D File Io 文件IO
|
1月前
|
存储 缓存 Unix
【嵌入式软件工程师面经】Linux文件IO
【嵌入式软件工程师面经】Linux文件IO
24 1
|
1月前
|
存储 安全 Unix
【.Net Core】深入理解IO之文件和目录
【.Net Core】深入理解IO之文件和目录
33 4
|
1月前
|
Java
io读两个文件,生成list 排重后写本地文件(Java)
io读两个文件,生成list 排重后写本地文件(Java)
17 2
|
17天前
|
Linux 网络安全 开发工具
【linux】基础IO |文件操作符
【linux】基础IO |文件操作符
17 0
|
19天前
使用字节输入流报错 java.io.FileNotFoundException: srcdruid.properties (系统找不到指定的文件。)
使用字节输入流报错 java.io.FileNotFoundException: srcdruid.properties (系统找不到指定的文件。)
16 0
|
1月前
|
Java
文件操作与IO(3) 文件内容的读写——数据流
文件操作与IO(3) 文件内容的读写——数据流
17 0
|
1月前
|
Java Windows
文件操作和IO(2):Java中操作文件
文件操作和IO(2):Java中操作文件
16 0