JAVA实现FTP服务器文件的上传,下载,删除功能

来源:互联网 发布:淘宝客模板 编辑:程序博客网 时间:2024/05/01 18:29

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.log4j.Logger;

import com.sinosoft.platform.handup.business.submitcapture.service.CaptureServiceImpl;
import com.sinosoft.platform.handup.utils.HandupInitialiser.Handup;

import sun.net.TelnetOutputStream;
import sun.net.TelnetInputStream;
import sun.net.ftp.FtpClient;

/**
 * FTP文件服务器上传,下载,删除操作
 * @author hejianke83
 *
 */
public class FtpClientUtil{

    String localfilename;
    String remotefilename;
    FtpClient ftpClient;

    /**
     * @param ip 服务器名字
     * @param port 端口
     * @param user 用户名
     * @param password 密码
     * @param path 服务器上的路径
     */
    public void connectServer(String ip, int port, String user,
            String password, String path){

        try {
            ftpClient = new FtpClient();
            ftpClient.openServer(ip, port);
            ftpClient.login(user, password);
            System.out.println("login success!");
            if (path.length() != 0)
                ftpClient.cd(path);
            ftpClient.binary();
        } catch (IOException ex){
            System.out.println("not login");
            System.out.println(ex);
        }
    }

    public void closeConnect() {
        try {
            ftpClient.closeServer();
            System.out.println("disconnect success");
        } catch (IOException ex) {
            System.out.println("not disconnect");
            System.out.println(ex);
        }
    }

    public void upload() {

        this.localfilename = "D://1.txt";
        this.remotefilename = "test2.txt";

        try {
            TelnetOutputStream os = ftpClient.put(this.remotefilename);
            java.io.File file_in = new java.io.File(this.localfilename);
            FileInputStream is = new FileInputStream(file_in);
            byte[] bytes = new byte[1024];
            int c;
            while ((c = is.read(bytes)) != -1) {
                os.write(bytes, 0, c);
            }
            System.out.println("upload success");
            is.close();
            os.close();
        } catch (IOException ex) {
            System.out.println("not upload");
            System.out.println(ex);
        }
    }

    public void download() {

        try {
            TelnetInputStream is = ftpClient.get(this.remotefilename);
            java.io.File file_in = new java.io.File(this.localfilename);
            FileOutputStream os = new FileOutputStream(file_in);
            byte[] bytes = new byte[1024];
            int c;
            while ((c = is.read(bytes)) != -1) {
                // System.out.println((char)is.read());
                // System.out.println(file_in);
                os.write(bytes, 0, c);
            }

            System.out.println("download success");
            os.close();
            is.close();
        } catch (IOException ex) {
            System.out.println("not download");
            System.out.println(ex);
        }
    }

    public void download(String remotePath, String remoteFile, String localFile) {

        try {
            if (remotePath.length() != 0)
                ftpClient.cd(remotePath);
            TelnetInputStream is = ftpClient.get(remoteFile);
            java.io.File file_in = new java.io.File(localFile);
            FileOutputStream os = new FileOutputStream(file_in);
            byte[] bytes = new byte[1024];
            int c;
            while ((c = is.read(bytes)) != -1) {
                // System.out.println((char)is.read());
                // System.out.println(file_in);
                os.write(bytes, 0, c);
            }

            System.out.println("download success");
            os.close();
            is.close();
        } catch (IOException ex) {
            System.out.println("not download");
            System.out.println(ex);
        }
    }

    public void download(String remoteFile, String localFile) {

        try {
            TelnetInputStream is = ftpClient.get(remoteFile);
            java.io.File file_in = new java.io.File(localFile);
            FileOutputStream os = new FileOutputStream(file_in);
            byte[] bytes = new byte[1024];
            int c;
            while ((c = is.read(bytes)) != -1) {
                // System.out.println((char)is.read());
                // System.out.println(file_in);
                os.write(bytes, 0, c);
            }

            System.out.println("download success");
            os.close();
            is.close();
        } catch (IOException ex) {
            System.out.println("not download");
            System.out.println(ex);
        }
    }
    public void delete_file(FtpClientUtil fu,String url) throws Exception {
     fu.ftpClient.sendServer("DELE "+url+"/r/n");
     int status = fu.ftpClient.readServerResponse();
     System.out.print("ftp delete file status:"+status);
     if(status == 250){
      System.out.println("  成功删除FTP服务器中文件");
     }
    }
   

    /**
     * 返回ftp目录下的文件列表
     * @param ftpdirectory
     * @return
     */
     public List getfilenamelist(String ftpdirectory)
 {
  List list = new ArrayList();
  try
  {
   BufferedReader d
           = new BufferedReader(new InputStreamReader(ftpClient
      .nameList(ftpdirectory)));
   String filename = "";
   while ((filename = d.readLine()) != null)
   {
    list.add(filename);
   }
  }
  catch (IOException e)
  {
   e.printStackTrace();
  }
  return list;
 }


    public static void main(String agrs[]) {

//      String filepath[] = { "/callcenter/index.jsp"};
//      String localfilepath[] = { "C:/FTP_Test/index.jsp"};
       
        FtpClientUtil fu = new FtpClientUtil();
        String url = Handup.getPropertie(Constants.PropertyKeys.FTP_SERVER_URL);
        String username = Handup.getPropertie(Constants.PropertyKeys.FTP_USERNAME);
        String password = Handup.getPropertie(Constants.PropertyKeys.FTP_PASSWORD);
//      fu.connectServer(url, 21, username,password,"");
        fu.connectServer("192.168.1.9", 21, "root","sinosoft","");

        try{
         //System.out.print(fu.ftpClient.welcomeMsg);
         fu.ftpClient.sendServer("DELE 博硕士论文/2008/10611/20208/测试上传_20080904525964/Div+CSS布局入门教程.chm/r/n");   //删除服务器上的文件
         System.out.println(fu.ftpClient.readServerResponse());
        }
        catch(Exception e)
        {
         e.printStackTrace();
        }
        //fu.upload();
        //fu.download();
        fu.closeConnect();

    }

 

    /**
     * 检查FTP服务器中文件夹是否存在
     *
     * @param dir
     * @return boolean
     */
    public boolean isServerDirExist(String dir){
        try {
         ftpClient.cd(dir);
        } catch (Exception e) {
            //e.printStackTrace();
            return false;
        }
        return true;
    }

    /**
     * 在FTP服务器中创建文件夹
     *
     * @param dir 文件夹名
     */
    public void createServerDir(String dir){
     try
     {
      ftpClient.ascii();
         StringTokenizer s = new StringTokenizer(dir, "/");
         s.countTokens();
         String pathname = "";
         while (s.hasMoreElements()) {
            pathname = pathname + "/" + (String) s.nextElement();
            try {
             ftpClient.sendServer("mkd " + pathname + "\r\n");// 如果服务器上有该目录,不会被创建
            } catch (Exception e) {
                e = null;
            }
            ftpClient.readServerResponse();
         }
         ftpClient.binary();
     }
     catch(Exception ex)
     {
      ex.printStackTrace();
     }
    }

    /**
     * 将FTP服务器中srcFile中的文件备份到destFile中
     *
     * @param srcFile需要备份的文件
     * @param destFile备份后的文件
     */
    public void ftpToFtpUpload(String srcFile, String destFile){
        TelnetOutputStream os = null;
        TelnetInputStream is = null;
        try {
            is = ftpClient.get(srcFile);
            os = ftpClient.put(destFile);
            byte[] bytes = new byte[1024];
            int c;
            while ((c = is.read(bytes)) != -1) {
                os.write(bytes, 0, c);
            }
            is.close();
            os.close();
        }
        catch (IOException ex) {
         ex.printStackTrace();
        }
        finally
        {
            try {
                if (is != null)
                {
                    is.close();
                    is = null;
                }
                if (os != null)
                {
                    os.close();
                    os = null;
                }
            }
            catch (IOException ex) {
             ex.printStackTrace();
            }
        }
    }

 

 

 public FtpClient getFtpClient() {
  return ftpClient;
 }

 public void setFtpClient(FtpClient ftpClient) {
  this.ftpClient = ftpClient;
 }
}

原创粉丝点击