首页 > 编程 > Java > 正文

Java FTPClient实现文件上传下载

2019-11-26 14:26:21
字体:
来源:转载
供稿:网友

在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件、下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件。
所用到的jar包有: 
commons-net-1.4.1.jar 
jakarta-oro.jar 
一、上传文件

 文件上传源代码     /**    * Description: 向FTP服务器上传文件    * @Version1.0    * @param url FTP服务器hostname    * @param port FTP服务器端口    * @param username FTP登录账号    * @param password FTP登录密码    * @param path FTP服务器保存目录    * @param filename 上传到FTP服务器上的文件名    * @param input 输入流    * @return 成功返回true,否则返回false    */   public static boolean uploadFile(     String url,//FTP服务器hostname     int port,//FTP服务器端口     String username, // FTP登录账号     String password, //FTP登录密码     String path, //FTP服务器保存目录     String filename, //上传到FTP服务器上的文件名     InputStream input // 输入流     ) {    boolean success = false;    FTPClient ftp = new FTPClient();    try {     int reply;     ftp.connect(url, port);//连接FTP服务器      //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器      ftp.login(username, password);//登录      reply = ftp.getReplyCode();     if (!FTPReply.isPositiveCompletion(reply)) {      ftp.disconnect();      return success;     }     ftp.changeWorkingDirectory(path);     ftp.storeFile(filename, input);             input.close();     ftp.logout();     success = true;    } catch (IOException e) {     e.printStackTrace();    } finally {     if (ftp.isConnected()) {      try {       ftp.disconnect();      } catch (IOException ioe) {      }     }    }    return success;   } 

以下是文件上传的测试用例:

 /**   * 将本地文件上传到FTP服务器上   *   */  public void testUpLoadFromDisk(){   try {    FileInputStream in=new FileInputStream(new File("D:/test.txt"));    boolean flag = uploadFile("127.0.0.1", 21, "administrator", "zyuc2011", "test", "test.txt", in);    System.out.println(flag);   } catch (FileNotFoundException e) {    e.printStackTrace();   }   }  /**   * 在FTP服务器上生成一个文件,并将一个字符串写入到该文件中   *   */  public void testUpLoadFromString(){   try {    String str = "这是要写入的字符串!";    InputStream input = new ByteArrayInputStream(str.getBytes("utf-8"));    boolean flag = uploadFile("127.0.0.1", 21, "administrator", "zyuc2011", "test", "test.txt", input);    System.out.println(flag);   } catch (UnsupportedEncodingException e) {    e.printStackTrace();   }  } 

二、文件下载
文件下载源代码  

 /**   * Description: 从FTP服务器下载文件   * @Version1.0   * @param url FTP服务器hostname   * @param port FTP服务器端口   * @param username FTP登录账号   * @param password FTP登录密码   * @param remotePath FTP服务器上的相对路径   * @param fileName 要下载的文件名   * @param localPath 下载后保存到本地的路径   * @return   */  public static boolean downFile(    String url, //FTP服务器hostname    int port,//FTP服务器端口    String username, //FTP登录账号    String password, //FTP登录密码    String remotePath,//FTP服务器上的相对路径    String fileName,//要下载的文件名    String localPath//下载后保存到本地的路径    ) {   boolean success = false;   FTPClient ftp = new FTPClient();   try {    int reply;    ftp.connect(url, port);    //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器     ftp.login(username, password);//登录     reply = ftp.getReplyCode();    if (!FTPReply.isPositiveCompletion(reply)) {     ftp.disconnect();     return success;    }    ftp.changeWorkingDirectory(remotePath);//转移到FTP服务器目录     FTPFile[] fs = ftp.listFiles();    for(FTPFile ff:fs){     if(ff.getName().equals(fileName)){      File localFile = new File(localPath+"/"+ff.getName());      OutputStream is = new FileOutputStream(localFile);       ftp.retrieveFile(ff.getName(), is);      is.close();     }    }        ftp.logout();    success = true;   } catch (IOException e) {    e.printStackTrace();   } finally {    if (ftp.isConnected()) {     try {      ftp.disconnect();     } catch (IOException ioe) {     }    }   }   return success;  } 

以下是文件下载的测试用例:

 /**   * 将FTP服务器上文件下载到本地   *   */  public void testDownFile(){   try {    boolean flag = downFile("127.0.0.1", 21, "administrator", "zyuc2011", "test", "test.txt", "D:/");    System.out.println(flag);   } catch (Exception e) {    e.printStackTrace();   }    } 

以上就是本文的全部内容,希望对大家的学习有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表