java实现FTP服务器

  • 格式:doc
  • 大小:66.50 KB
  • 文档页数:16

commons-net包的FTP功能<一>2008-07-03 15:41use : commons-net-1.4.1package com.sinomos.rpt.bean;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import .ftp.FTPClient;import .ftp.FTPClientConfig;import .ftp.FTPConnectionClosedException;/** *//*** @applicability 10.1.10.19 10.1.10.20*/public class uFtp{private FTPClient ftpClient = null;//private OutputStream outSteam = null;//ftp服务器地址private String hostName;//ftp服务器默认端口public static int defaultport = 21;//登录名private String userName;//登录密码private String password;//需要访问的远程目录private String remoteDir;/** *//*** @param hostName 主机地址* @param port 端口号* @param userName 用户名* @param password 密码* @param remoteDir 默认工作目录* @param is_zhTimeZone 是否是中文FTP Server端* @return*/public uFtp(String hostName,int port,String userName,String password,String remoteDir,boolean is_zhTimeZone) ...{this.hostName=hostName;erName=userName;this.password=password;this.remoteDir=remoteDir==null?"":remoteDir;this.ftpClient = new FTPClient();if(is_zhTimeZone) ...{this.ftpClient.configure(uFtp.Config());this.ftpClient.setControlEncoding("GBK");}this.login();this.changeDir(this.remoteDir);this.setFileType(FTPClient.ASCII_FILE_TYPE);//this.changeDir(this.remoteDir);ftpClient.setDefaultPort(port);}/** *//*** 登录FTP服务器*/public void login() ...{try ...{ftpClient.connect(this.hostName);ftpClient.login(erName, this.password);} catch (FTPConnectionClosedException e) ...{// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) ...{// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("连接到ftp服务器:" + this.hostName + " 成功..开始登录");}//FTPClientConfig conf = newFTPClientConfig(FTPClientConfig.SYST_UNIX);private static FTPClientConfig Config() ...{FTPClientConfig conf = newFTPClientConfig(FTPClientConfig.SYST_UNIX);conf.setRecentDateFormatStr("MM月dd日 HH:mm");//conf.setRecentDateFormatStr("(YYYY年)?MM月dd日( HH:mm)?");return conf;}/** *//*** 变更工作目录* @param remoteDir--目录路径*/public void changeDir(String remoteDir) ...{try ...{this.remoteDir = remoteDir;ftpClient.changeWorkingDirectory(remoteDir);} catch (IOException e) ...{// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("变更工作目录为:"+remoteDir);}/** *//*** 返回上一级目录(父目录)*/public void ToParentDir() ...{try ...{ftpClient.changeToParentDirectory();} catch (IOException e) ...{// TODO Auto-generated catch blocke.printStackTrace();}}/** *//*** 列出当前工作目录下所有文件*/public String[] ListAllFiles() ...{String[] names=this.ListFiles("*");return this.sort(names);}/** *//*** 列出指定工作目录下的匹配文件* @param dir exp: /cim/* @param file_regEx 通配符为**/public String[] ListAllFiles(String dir,String file_regEx) ...{ String[] names=this.ListFiles(dir+file_regEx);return this.sort(names);}/** *//*** 列出匹配文件* @param file_regEx 匹配字符,通配符为**/public String[] ListFiles(String file_regEx) ...{try ...{/**//*FTPFile[] remoteFiles =ftpClient.listFiles(file_regEx);//System.out.println(remoteFiles.length);String[] name = new String[remoteFiles.length];if(remoteFiles != null) {for(int i=0;i<remoteFiles.length;i++) {if(remoteFiles[i] == null)name[i] = "";elseif(remoteFiles[i].getName()==null||remoteFiles[i].getName().equals(". ")||remoteFiles[i].getName().equals("..")) {name[i] = "";}else name[i] =remoteFiles[i].getName();System.out.println(name[i]);}}*/String[] name =ftpClient.listNames(file_regEx);if(name==null)return new String[0];return this.sort(name);} catch (IOException e) ...{// TODO Auto-generated catch blocke.printStackTrace();}return new String[0];}public void Lists(String reg) ...{try ...{String[] a=ftpClient.listNames(reg);for(String b:a) ...{System.out.println(b);}} catch (IOException e) ...{// TODO Auto-generated catch blocke.printStackTrace();}}/** *//*** 设置传输文件的类型[文本文件或者二进制文件]* @param fileType--BINARY_FILE_TYPE,ASCII_FILE_TYPE*/public void setFileType(int fileType)...{try...{ftpClient.setFileType(fileType);}catch(IOException e)...{e.printStackTrace();}}/** *//*** 上传文件* @param localFilePath--本地文件路径+文件名* @param newFileName--新的文件名*/public void uploadFile(String localFilePath,String newFileName)...{//上传文件BufferedInputStream buffIn=null;try...{buffIn=new BufferedInputStream(new FileInputStream(localFilePath));ftpClient.storeFile(newFileName, buffIn);}catch(Exception e)...{e.printStackTrace();}finally...{try...{if(buffIn!=null)buffIn.close();}catch(Exception e)...{e.printStackTrace();}}}/** *//*** 下载文件(单个)* @param remoteFileName --服务器上的文件名* @param localFileName--本地文件名*/public String downloadFile(String remoteFileName,String localFileName)...{BufferedOutputStream buffOut=null;try...{buffOut=new BufferedOutputStream(new FileOutputStream(localFileName));ftpClient.retrieveFile(remoteFileName, buffOut);}catch(Exception e)...{e.printStackTrace();return "";}finally...{try...{if(buffOut!=null)buffOut.close();}catch(Exception e)...{e.printStackTrace();}}return localFileName;}/** *//*** 关闭FTP连接*/public void close() ...{try...{if(ftpClient!=null)...{ftpClient.logout();ftpClient.disconnect();}}catch (Exception e)...{e.printStackTrace();}}/** *//*** 冒泡排序字符串(从大到小)*/public String[] sort(String[] str_Array) ...{if(str_Array==null) ...{throw new NullPointerException("The str_Array can not be null!");}String tmp = "";for(int i=0;i<str_Array.length;i++) ...{for(int j=0;j<str_Array.length-i-1;j++) ...{if(str_Array[j].compareTo(str_Array[j+ 1])<0) ...{tmp = str_Array[j];str_Array[j] = str_Array[j + 1];str_Array[j + 1] = tmp;}}}return str_Array;}/** *//*** @param args*/public static void main(String[] args) ...{// TODO Auto-generated method stub//String[] files = null;uFtp ftp = newuFtp("10.1.10.19",uFtp.defaultport,"eda","sinomos","/tyne_home/wat/db /",true);//uftp.ListFiles();//ftp.changeDir("/tyne_home/wat/db/");//String[] s = ftp.ListFiles("*SN_141*.wdf");//System.out.println(s.length);ftp.Lists("SN_141.wdf");//ftp.downloadFile("SN_141.wdf", "Data/SN_141.wdf");/**//*System.out.println("==========================");for(int i=0;i<files.length;i++) {System.out.println("files["+i+"]:"+files[i]);}*///uftp.uploadFile("D:/TestFile/temp.xml","temp.xml");}}package woxingwosu;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.text.SimpleDateFormat;import parator;import java.util.Properties;import java.util.TreeSet;import mons.io.FileUtils;import .ftp.FTP;import .ftp.FTPClient;import .ftp.FTPClientConfig;import .ftp.FTPFile;import .ftp.FTPReply;/*** 其实JDK里面也有支持FTP操作的包【jre/lib下的rt.jar】,但是SUN的DOC里面并没有提供相应文档,* 因为这里面的包,不被官方支持,建议不要使用。