>  기사  >  Java  >  Java의 FTP 서버에서 FTP 업로드 및 다운로드, 파일 삭제 및 폴더 업로드 구현 방법

Java의 FTP 서버에서 FTP 업로드 및 다운로드, 파일 삭제 및 폴더 업로드 구현 방법

高洛峰
高洛峰원래의
2017-01-11 15:05:511706검색

서버 설정 모듈을 포함하여 FTP 기능을 구현하는 JAVA 코드로, 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();
    }
  }
}

위 코드는 FTP 업로드 및 다운로드 구현, 파일 삭제, FTP에 폴더 업로드를 구현하는 Java의 방법에 대한 편집자의 소개입니다. 서버. 모두 마음에 드셨으면 좋겠습니다.

ftp 업로드 및 다운로드, 파일 삭제, ftp 서버의 폴더 업로드를 구현하는 더 많은 Java 방법을 보려면 PHP 중국어 웹사이트에 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.