欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-03-06 20:16:08
一个java 实现ftp功能的代码,包括了服务器的设置模块,并包括有上传文件至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服务器上传文件夹的方法,希望大家喜欢。