当前位置: 首页 > 编程笔记 >

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

孙胜泫
2023-03-14
本文向大家介绍Java实现ftp上传下载、删除文件及在ftp服务器上传文件夹的方法,包括了Java实现ftp上传下载、删除文件及在ftp服务器上传文件夹的方法的使用技巧和注意事项,需要的朋友参考一下

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

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实现将文件上传到ftp服务器的方法,包括了java实现将文件上传到ftp服务器的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java实现将文件上传到ftp服务器的方法。分享给大家供大家参考,具体如下: 工具类: 读取配置文件: 将文件上传ftp: 更多关于java相关内容感兴趣的读者可查看本站专题:《Java文件与目录操作技巧汇总》、《Java数据结构与算法教

  • 我想将文件从一台服务器上传到另一台FTP服务器,以下是我的上传文件代码,但它抛出错误为: 远程服务器返回错误:(550)文件不可用(例如,找不到文件,无法访问)。 这是我的代码: 你能告诉我哪里出了问题吗?

  • 本文向大家介绍java实现ftp上传 如何创建文件夹,包括了java实现ftp上传 如何创建文件夹的使用技巧和注意事项,需要的朋友参考一下 java如何实现ftp上传?如何创建文件夹? 最佳答案: 准备条件:java实现ftp上传用到了commons-net-3.3.jar包 首先建立ftphost连接 然后再利用ftpclient的makeDirectory方法创建文件夹 断开host连接 最后

  • 本文向大家介绍Python ftp上传文件,包括了Python ftp上传文件的使用技巧和注意事项,需要的朋友参考一下 以下代码比较简单,对python实现ftp上传文件相关知识感兴趣的朋友可以参考下 下面给大家介绍python实现ftp上传下载文件的方法 python本身自带一个FTP模块,可以实现上传下载的函数功能。

  • 本文向大家介绍python实现的简单FTP上传下载文件实例,包括了python实现的简单FTP上传下载文件实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python实现的简单FTP上传下载文件的方法。分享给大家供大家参考。具体如下: python本身自带一个FTP模块,可以实现上传下载的函数功能。 希望本文所述对大家的Python程序设计有所帮助。

  • 我正在使用.NET 4 C。我正在尝试上载一个ZIP文件,然后将其下载到(我的)服务器。 上传我有 这似乎可行,因为我在服务器上得到了一个大小合适的文件。 1) 我如何将其流式传输,而不是首先将其加载到内存中?我将上传非常大的文件。 为了下载我有 2)一切似乎都正常......除了当我尝试解压缩下载的ZIP文件时,我得到了一个无效的ZIP文件。