Java实现ftp上传下载、删除文件及在ftp服务器上传文件夹的方法

 更新时间:2015年11月12日 13:55:27   投稿:mrr  
这篇文章主要介绍了Java实现ftp上传下载、删除文件及在ftp服务器上传文件夹的方法,需要的朋友可以参考下

一个JAVA 实现FTP功能的代码,包括了服务器的设置模块,并包括有上传文件至FTP的通用方法、下载文件的通用方法以及删除文件、在ftp服务器上传文件夹、检测文件夹是否存在等,里面的有些代码对编写JAVA文件上传或许有参考价值,Java FTP主文件代码:

package ftpDemo;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import sun.net.TelnetInputStream;
import sun.net.TelnetOutputStream;
import sun.net.ftp.FtpClient;
public class ftpUtil {
// 上传文件至FTP通用方法
public static void upLoadFileFtp(KmConfig kmConfig,InputStream is, String fileName){
  try {
    String ftpHost = kmConfig.getFtpHost();
    int port = kmConfig.getFtpPort();
    String userName = kmConfig.getFtpUser();
    String passWord = kmConfig.getFtpPassword();
    String path = kmConfig.getFtpPath();
    FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。
    ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码
    ftpClient.binary();
    ftpClient.cd(path);// path为FTP服务器上保存上传文件的路径。
    TelnetOutputStream telnetOut = ftpClient.put(fileName);// fileName为上传的文件名
    DataOutputStream dataOut = new DataOutputStream(telnetOut);
    byte buffer[] = new byte[ * ];
    int count = ;
    while ((count = is.read(buffer)) != -) {
      dataOut.write(buffer, , count);
    }
    telnetOut.close();
    dataOut.close();
    ftpClient.closeServer();
  } catch (Exception e) {
    System.out.println("上传文件失败!请检查系统FTP设置,并确认FTP服务启动");
  }
}
// 删除文件至FTP通用方法
public static void deleteFileFtp(KmConfig kmConfig,String fileName){
  try {
    String ftpHost = kmConfig.getFtpHost();
    int port = kmConfig.getFtpPort();
    String userName = kmConfig.getFtpUser();
    String passWord = kmConfig.getFtpPassword();
    String path = kmConfig.getFtpPath();
    FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。
    ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码
    ftpClient.binary();
    ftpClient.cd(path);// path为FTP服务器上保存上传文件的路径。
    try {
      ftpClient.sendServer("dele " + fileName + "\r\n");
    } catch (Exception e) {
      System.out.println("删除文件失败!请检查系统FTP设置,并确认FTP服务启动");
    }
    ftpClient.closeServer();
  } catch (Exception e) {
    System.out.println("删除文件失败!");
  }
}
// 下载ftp文件
public static void downloadFileFtp(KmConfig kmConfig,String fileName, String clientFileName, OutputStream outputStream){
  try {
    String ftpHost = kmConfig.getFtpHost();
    int port = kmConfig.getFtpPort();
    String userName = kmConfig.getFtpUser();
    String passWord = kmConfig.getFtpPassword();
    String path = kmConfig.getFtpPath();
    FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。
    ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码
    ftpClient.binary();
    ftpClient.cd(path);// path为FTP服务器上保存上传文件的路径。
    try {
      TelnetInputStream in = ftpClient.get(fileName);
      byte[] bytes = new byte[];
      int cnt=;
      while ((cnt=in.read(bytes,,bytes.length)) != -) {
        outputStream.write(bytes, , cnt);
      }
      outputStream.close();
      in.close();
    } catch (Exception e) {
      ftpClient.closeServer();
      e.printStackTrace();
    }
    ftpClient.closeServer();
  } catch (Exception e) {
    System.out.println("下载文件失败!请检查系统FTP设置,并确认FTP服务启动");
  }
}
//在ftp服务器上传件文件夹
  public boolean createDir(String path,FtpClient ftpClient) throws Exception{
      //进入到home文件夹下
      ftpClient.cd("/home");
      //创建远程文件夹
      //远程命令包括
      //USER  PORT  RETR  ALLO  DELE  SITE  XMKD  CDUP  FEAT<br>
//     PASS  PASV  STOR  REST  CWD   STAT  RMD   XCUP  OPTS<br>
//     ACCT  TYPE  APPE  RNFR  XCWD  HELP  XRMD  STOU  AUTH<br>
//     REIN  STRU  SMNT  RNTO  LIST  NOOP  PWD   SIZE  PBSZ<br>
//     QUIT  MODE  SYST  ABOR  NLST  MKD   XPWD  MDTM  PROT<br>
//        在服务器上执行命令,如果用sendServer来执行远程命令(不能执行本地FTP命令)的话,所有FTP命令都要加上/r/n<br>
//          ftpclient.sendServer("XMKD /test/bb/r/n"); //执行服务器上的FTP命令<br>
//          ftpclient.readServerResponse一定要在sendServer后调用<br>
//          nameList("/test")获取指目录下的文件列表<br>
//          XMKD建立目录,当目录存在的情况下再次创建目录时报错<br>
//          XRMD删除目录<br>
//          DELE删除文件<br>
    //通过远程命令 穿件一个files文件夹
    ftpClient.sendServer("MKD "+ path + "\r\n");
    //这个方法必须在 这两个方法中间调用 否则 命令不管用
    ftpClient.binary();
    ftpClient.readServerResponse();
    return false;
  }
/**
 * 检查文件夹是否存在
 * @param dir
 * @param ftpClient
 * @return
 */
  public boolean isDirExist(String dir, FtpClient ftpClient) {
     try {
      ftpClient.cd(dir);
    } catch (Exception e) {
      return false;
    }
    return true;
  }
}

KmConfig.java代码如下:定义FTP服务器参数,包括登录的用户名密码之类的。

package ftpDemo;
public class KmConfig {
  //主机ip
  private String FtpHost = "";
  //端口号
  private int FtpPort;
  //ftp用户名
  private String FtpUser = "";
  //ftp密码
  private String FtpPassword = "";
  //ftp中的目录
  private String FtpPath = "";
  public String getFtpHost() {
    return FtpHost;
  }
  public void setFtpHost(String ftpHost) {
    FtpHost = ftpHost;
  }
  public int getFtpPort() {
    return FtpPort;
  }
  public void setFtpPort(int ftpPort) {
    FtpPort = ftpPort;
  }
  public String getFtpUser() {
    return FtpUser;
  }
  public void setFtpUser(String ftpUser) {
    FtpUser = ftpUser;
  }
  public String getFtpPassword() {
    return FtpPassword;
  }
  public void setFtpPassword(String ftpPassword) {
    FtpPassword = ftpPassword;
  }
  public String getFtpPath() {
    return FtpPath;
  }
  public void setFtpPath(String ftpPath) {
    FtpPath = ftpPath;
  }
}

下面是测试代码:

package ftpDemo;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
public class Test {
  public static void main(String[] args) {
    //设置ftp
    KmConfig km = new KmConfig();
    km.setFtpHost("...");
    km.setFtpPort();
    km.setFtpUser("test");
    km.setFtpPassword("");
    km.setFtpPath("KM");
    //上传到ftp
    ftpUtil util=new ftpUtil();
    File file = new File("F:/文章.jpg");
    InputStream in;
    try {
      in = new FileInputStream(file);
      util.upLoadFileFtp(km, in, "更改后的名字.jpg");
    } catch (FileNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
}

以上代码是小编给大家介绍关于Java实现ftp上传下载、删除文件及在ftp服务器上传文件夹的方法,希望大家喜欢。

相关文章

  • java:无法访问org.springframework.boot.SpringApplication的解决方法

    java:无法访问org.springframework.boot.SpringApplication的解决方法

    这篇文章主要给大家介绍了关于java:无法访问org.springframework.boot.SpringApplication的解决方法,文中通过实例代码将解决的办法介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • Springboot-Management的项目实践

    Springboot-Management的项目实践

    本文主要介绍了Springboot-Management的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • java中ExecutorService创建方法总结

    java中ExecutorService创建方法总结

    在本篇文章里小编给大家整理了一篇关于java中ExecutorService创建方法总结,有兴趣的朋友们可以参考下。
    2021-01-01
  • Spring JPA find分页示例详解

    Spring JPA find分页示例详解

    这篇文章主要为大家介绍了Spring JPA find分页示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • 一键打包压缩,Java项目变身JAR

    一键打包压缩,Java项目变身JAR

    想要一键打包Java项目生成JAR文件并进行压缩?本指南将带你轻松驾驭这项看似复杂的任务,让我们一起揭开神秘的面纱,轻松打包,高效出发!
    2023-12-12
  • java集合与数组的相同点和不同点

    java集合与数组的相同点和不同点

    今天小编就为大家分享一篇关于java集合与数组的相同点和不同点,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • struts2静态资源映射代码示例

    struts2静态资源映射代码示例

    这篇文章主要介绍了struts2静态资源映射的相关内容,涉及了具体代码示例,具有一定参考价值,需要的朋友可以了解下。
    2017-09-09
  • Spring Cloud Feign的文件上传实现的示例代码

    Spring Cloud Feign的文件上传实现的示例代码

    这篇文章主要介绍了Spring Cloud Feign的文件上传实现的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Java面试最容易被刷的重难点之锁的使用策略

    Java面试最容易被刷的重难点之锁的使用策略

    锁像synchronized同步块一样,是一种线程同步机制,但比Java中的synchronized同步块更复杂。因为锁(以及其它更高级的线程同步机制)是由synchronized同步块的方式实现的,所以我们还不能完全摆脱synchronized关键字
    2021-10-10
  • EditPlus运行java时从键盘输入数据的操作方法

    EditPlus运行java时从键盘输入数据的操作方法

    这篇文章主要介绍了EditPlus运行java时从键盘输入数据的操作方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03

最新评论