基于 Apache Commons Net 实现javaFTP上传.docx

上传人:b****5 文档编号:6340651 上传时间:2023-01-05 格式:DOCX 页数:8 大小:18.08KB
下载 相关 举报
基于 Apache Commons Net 实现javaFTP上传.docx_第1页
第1页 / 共8页
基于 Apache Commons Net 实现javaFTP上传.docx_第2页
第2页 / 共8页
基于 Apache Commons Net 实现javaFTP上传.docx_第3页
第3页 / 共8页
基于 Apache Commons Net 实现javaFTP上传.docx_第4页
第4页 / 共8页
基于 Apache Commons Net 实现javaFTP上传.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

基于 Apache Commons Net 实现javaFTP上传.docx

《基于 Apache Commons Net 实现javaFTP上传.docx》由会员分享,可在线阅读,更多相关《基于 Apache Commons Net 实现javaFTP上传.docx(8页珍藏版)》请在冰豆网上搜索。

基于 Apache Commons Net 实现javaFTP上传.docx

基于ApacheCommonsNet实现javaFTP上传

复杂的地方体现在文件夹的上传。

 

在前面层用ApacheCommonsNet工具包实现了JavaFTP单个文件的上传下载功能,这次,实现的是对一个本地目录的上传,实现费了很大劲,虽然实现了,但是感觉还是对此封装不是非常满意,改用了其他的FTP客户端工具。

将这个半成品放出来供各位研究吧。

 

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 java.util.Comparator;

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里面并没有提供相应文档,

*因为这里面的包,不被官方支持,建议不要使用。

我们可以使用第三方提供的包mons。

*mons的包,都有文档,方便使用

*另外IBM也有提供一个ftp包,我没有用过,有兴趣的可以去研究一下

*@commons-net:

*@jakarta-oro:

 

*@commons-io:

* @author 我行我素

*@2007-08-03

*/

public class MiniFtp{

    private static Stringusername;

    private static Stringpassword;

    private static Stringip;

    private static int port;

    private static Propertiesproperty=null;//配置

    private static StringconfigFile;//配置文件的路径名

    

    private static FTPClientftpClient=null;

    private static SimpleDateFormatdateFormat=new SimpleDateFormat("yyyy-MM-ddhh:

mm");

    

    private static final String[]FILE_TYPES={"文件","目录","符号链接","未知类型"};

    

    public static void main(String[]args){

        setConfigFile("woxingwosu.properties");//设置配置文件路径

        connectServer();

        listAllRemoteFiles();//列出所有文件和目录

        changeWorkingDirectory("webroot");//进入文件夹webroot

        listRemoteFiles("*.jsp");//列出webroot目录下所有jsp文件

        setFileType(FTP.BINARY_FILE_TYPE);//设置传输二进制文件

        uploadFile("woxingwosu.xml","myfile.xml");//上传文件woxingwosu.xml,重新命名为myfile.xml

        renameFile("viewDetail.jsp", "newName.jsp");//将文件viewDetail.jsp改名为newName.jsp

        deleteFile("UpdateData.class");//删除文件UpdateData.class

        loadFile("UpdateData.java","loadFile.java");//下载文件UpdateData.java,并且重新命名为loadFile.java

        closeConnect();//关闭连接

    }

    

    /**

     *上传文件

     * @param localFilePath--本地文件路径

     * @param newFileName--新的文件名

     */

    public static void uploadFile(StringlocalFilePath,StringnewFileName){

        connectServer();

        //上传文件

        BufferedInputStreambuffIn=null;

        try{

            buffIn=new BufferedInputStream(new FileInputStream(localFilePath));

            ftpClient.storeFile(newFileName,buffIn);

        }catch(Exceptione){

            e.printStackTrace();

        }finally{

            try{

                if(buffIn!

=null)

                    buffIn.close();

            }catch(Exceptione){

                e.printStackTrace();

            }

        }

    }

    

    /**

     *下载文件

     * @param remoteFileName--服务器上的文件名

     * @param localFileName--本地文件名

     */

    public static void loadFile(StringremoteFileName,StringlocalFileName){

        connectServer();

        //下载文件

        BufferedOutputStreambuffOut=null;

        try{

            buffOut=new BufferedOutputStream(new FileOutputStream(localFileName));

            ftpClient.retrieveFile(remoteFileName,buffOut);

        }catch(Exceptione){

            e.printStackTrace();

        }finally{

            try{

                if(buffOut!

=null)

                    buffOut.close();

            }catch(Exceptione){

                e.printStackTrace();

            }

        }

    }

    

    /**

     *列出服务器上所有文件及目录

     */

    public static void listAllRemoteFiles(){

        listRemoteFiles("*");

    }

    /**

     *列出服务器上文件和目录

     * @param regStr--匹配的正则表达式

     */

    @SuppressWarnings("unchecked")

    public static void listRemoteFiles(StringregStr){

        connectServer();

        try{

            FTPFile[]files=ftpClient.listFiles(regStr);

            if(files==null||files.length==0)

                System.out.println("Therehasnotanyfile!

");

            else{

                TreeSet fileTree=new TreeSet(

                        new Comparator(){

                            //先按照文件的类型排序(倒排),然后按文件名顺序排序

                            public int compare(ObjectobjFile1,ObjectobjFile2){

                                if(objFile1==null)

                                    return -1;

                                else if(objFile2==null)

                                    return 1;

                                else{

                                    FTPFilefile1=(FTPFile)objFile1;

                                    FTPFilefile2=(FTPFile)objFile2;

                                    if(file1.getType()!

=file2.getType())

                                        return file2.getType()-file1.getType();

                                    else

                                        return file1.getName().compareTo(file2.getName());

                                }

                            }

                        }

                );

                for(FTPFilefile:

files)

                    fileTree.add(file);

                System.out.printf("%-35s%-10s%15s%15s\n","名称","类型","修改日期","大小");

                for(FTPFilefile:

fileTree){

                    System.out.printf("%-35s%-10s%15s%15s\n",iso8859togbk(file.getName()),FILE_TYPES[file.getType()]

                            ,dateFormat.format(file.getTimestamp().getTime()),FileUtils.byteCountToDisplaySize(file.getSize()));

                }

            }

        }catch(Exceptione){

            e.printStackTrace();

        }

    }

    

    /**

     *关闭连接

     */

    public static void closeConnect(){

        try{

            if(ftpClient!

=null){

                ftpClient.logout();

                ftpClient.disconnect();

            }

        }catch(Exceptione){

            e.printStackTrace();

        }

    }

    

    /**

     *设置配置文件

     * @param configFile

     */

    public static void setConfigFile(StringconfigFile){

        MiniFtp.configFile = configFile;

    }

    

    /**

     *设置传输文件的类型[文本文件或者二进制文件]

     * @param fileType--BINARY_FILE_TYPE、ASCII_FILE_TYPE 

     */

    public static void setFileType(int fileType){

        try{

            connectServer();

            ftpClient.setFileType(fileType);

        }catch(Exceptione){

            e.printStackTrace();

        }

    }

    

    /**

     *扩展使用

     * @return

     */

    protected static FTPClientgetFtpClient(){

        connectServer();

        return ftpClient;

    }

    /**

     *设置参数

     * @param configFile--参数的配置文件

     */

    private static void setArg(StringconfigFile){

        property=new Properties();

        BufferedInputStreaminBuff=null;

        try{

            inBuff=new BufferedInputStream(new FileInputStream(configFile));

            property.load(inBuff);

            username=property.getProperty("username");

            password=property.getProperty("password");

            ip=property.getProperty("ip");

            port=Integer.parseInt(property.getProperty("port"));

        }catch(Exceptione){

            e.printStackTrace();

        }finally{

            try{

                if(inBuff!

=null)

                    inBuff.close();

            }catch(Exceptione){

                e.printStackTrace();

            }

        }

    }

    

    /**

     *连接到服务器

     */

    public static void connectServer(){

        if (ftpClient == null){

            int reply;

            try {

                setArg(configFile);

                ftpClient=new FTPClient();

                ftpClient.setDefaultPort(port);

                ftpClient.configure(getFtpConfig());

                ftpClient.connect(ip);

                ftpClient.login(username,password);

                ftpClient.setDefaultPort(port);

                System.out.print(ftpClient.getReplyString());

                reply = ftpClient.getReplyCode();

                if (!

FTPReply.isPositiveCompletion(reply)){

                    ftpClient.disconnect();

                    System.err.println("FTPserverrefusedconnection.");

                }

            } catch (Exceptione){

                System.err.println("登录ftp服务器【"+ip+"】失败");

                e.printStackTrace();

            }

        }

    }

    

    /**

     *进入到服务器的某个目录下

     * @param directory

     */

    public static void changeWorkingDirectory(Stringdirectory){

        try{

            connectServer();

            ftpClient.changeWorkingDirectory(directory);

        }catch(IOExceptionioe){

            ioe.printStackTrace();

        }

    }

    

    /**

     *返回到上一层目录

     */

    public static void changeToParentDirectory(){

        try{

            connectServer();

            ftpClient.changeToParentDirectory();

        }catch(IOExceptionioe){

            ioe.printStackTrace();

        }

    }

    

    /**

     *删除文件

     */

    public static void deleteFile(Stringfilename){

        try{

            connectServer();

            ftpClient.deleteFile(filename);

        }catch(IOExceptionioe){

            ioe.printStackTrace();

        }

    }

    

    /**

     *重命名文件 

     * @param oldFileName--原文件名

     * @param newFileName--新文件名

     */

    public static void renameFile(StringoldFileName,StringnewFileName){

        try{

   

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1