Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6416
  • 博文数量: 5
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 45
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-18 15:26
文章分类
文章存档

2014年(5)

我的朋友
最近访客

分类: LINUX

2014-11-18 15:52:30

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

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服务启动");   }  }  //在上传件文件夹    public boolean createDir(String path,FtpClient ftpClient) throws Exception{     //进入到home文件夹下      ftpClient.cd("/home");     //创建远程文件夹      //远程包括      //USER	PORT	RETR	ALLO	DELE	SITE	XMKD	CDUP	FEAT
// PASS PASV STOR REST CWD STAT RMD XCUP OPTS
// ACCT TYPE APPE RNFR XCWD HELP XRMD STOU AUTH
// REIN STRU SMNT RNTO LIST NOOP PWD SIZE PBSZ
// QUIT MODE SYST ABOR NLST MKD XPWD MDTM PROT
// 在服务器上执行命令,如果用sendServer来执行远程命令(不能执行本地FTP命令)的话,所有FTP命令都要加上/r/n
// ftpclient.sendServer("XMKD /test/bb/r/n"); //执行服务器上的FTP命令
// ftpclient.readServerResponse一定要在sendServer后调用
// nameList("/test")获取指目录下的文件列表
// XMKD建立目录,当目录存在的情况下再次创建目录时报错
// XRMD删除目录
// DELE删除文件
//通过远程命令 穿件一个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();  }

    }

}
  • 相关文章推荐:
  • 本文来自:
  • 本文链接:
阅读(505) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~