Java中实现FTP上传下载文件的功能,完整代码

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

<pre class="prettyprint <a href=" http:="" www.ahlinux.com="" java="" "="" target="_blank" style="margin-top: 0px; margin-bottom: 0px; padding: 0px;">java"> 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();

  }

    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值