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个参数,一个是远程目录,一个是本地目录

你可能感兴趣的:(IO,操作,download)