文档章节

java利用ftpClient来创建多层目录文件

啊哈关关
 啊哈关关
发布于 2017/02/28 09:47
字数 454
阅读 1253
收藏 0
点赞 0
评论 0
//改变目录路径
 public boolean changeWorkingDirectory(String directory) {
        boolean flag = true;
        try {
            flag = ftpClient.changeWorkingDirectory(directory);
            if (flag) {
                logger.debug("进入文件夹" + directory + " 成功!");

            } else {
                logger.debug("进入文件夹" + directory + " 失败!");
            }
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
        return flag;
    }


//创建目录
    public boolean makeDirectory(String dir) {
        boolean flag = true;
        try {
            flag = ftpClient.makeDirectory(dir);
            if (flag) {
                logger.debug("创建文件夹" + dir + " 成功!");

            } else {
                logger.debug("创建文件夹" + dir + " 失败!");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return flag;
    }


//创建多层目录文件,如果有ftp服务器已存在该文件,则不创建,如果无,则创建
    public boolean CreateDirecroty(String remote) throws IOException {
        boolean success = true;
        String directory = remote + "/";
//        String directory = remote.substring(0, remote.lastIndexOf("/") + 1);
        // 如果远程目录不存在,则递归创建远程服务器目录
        if (!directory.equalsIgnoreCase("/") && !changeWorkingDirectory(new String(directory))) {
            int start = 0;
            int end = 0;
            if (directory.startsWith("/")) {
                start = 1;
            } else {
                start = 0;
            }
            end = directory.indexOf("/", start);
            String path = "";
            String paths = "";
            while (true) {

                String subDirectory = new String(remote.substring(start, end).getBytes("GBK"), "iso-8859-1");
                path = path + "/" + subDirectory;
                if (!existFile(path)) {
                    if (makeDirectory(subDirectory)) {
                        changeWorkingDirectory(subDirectory);
                    } else {
                        logger.debug("创建目录[" + subDirectory + "]失败");
                         changeWorkingDirectory(subDirectory);
                    }
                } else {
                    changeWorkingDirectory(subDirectory);
                }

                paths = paths + "/" + subDirectory;
                start = end + 1;
                end = directory.indexOf("/", start);
                // 检查所有目录是否创建完毕
                if (end <= start) {
                    break;
                }
            }
        }
        return success;
    }





//判断ftp服务器文件是否存在    
public boolean existFile(String path) throws IOException {
        boolean flag = false;
        FTPFile[] ftpFileArr = ftpClient.listFiles(path);
        if (ftpFileArr.length > 0) {
            flag = true;
        }
        return flag;
    }


//上传单个文件
    public boolean uploadFile(File localFile, String remoteFile)
            throws IOException {
        boolean flag = false;
        InputStream in = new FileInputStream(localFile);
        String remote = new String(remoteFile.getBytes("GBK"), "iso-8859-1");
        try {
            if (ftpClient.storeFile(remote, in)) {
                flag = true;
                logger.debug(localFile.getAbsolutePath() + "上传文件成功!");
            } else {
                logger.debug(localFile.getAbsolutePath() + "上传文件失败!");
            }
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return flag;
    }


//利用递归上传多个多目录文件
    public boolean uploadFiles(String localPathFileName, String remotePathFileName) throws IOException {
        //
        File local = new File(localPathFileName);

        if (local.isDirectory()) {
            try {
                this.ftpClient.changeWorkingDirectory("/");
                CreateDirecroty(remotePathFileName);
            } catch (Exception e) {
                e.printStackTrace();
            }
        } else {
            File local1 = new File(localPathFileName);
            uploadFile(local1, remotePathFileName);
        }
        File sourceFile[] = local.listFiles();
        for (int i = 0; i < sourceFile.length; i++) {
            if (sourceFile[i].exists()) {
                String path = sourceFile[i].getAbsolutePath().substring(localPathFileName.length());
                if (sourceFile[i].isDirectory()) {
                    this.uploadFiles(sourceFile[i].getAbsolutePath(), remotePathFileName + path);
                } else {
                    if (!path.equals("/.DS_Store")) {
                        File file2 = new File(sourceFile[i].getAbsolutePath());
                        uploadFile(file2, remotePathFileName + path);
                    }
                }
            }
        }
        return true;
    }

© 著作权归作者所有

共有 人打赏支持
啊哈关关
粉丝 5
博文 126
码字总数 63808
作品 0
深圳
程序员
Tomcat与Jre绿色环境配置(生产环境)

Tomcat与Jre绿色环境配置(生产环境)博客分类: Apache Java jreapachetomcat Tomcat运行时需要jre的支持,一般有两种方式,一种是用jdk带的jre,另一种无需安装jdk只利用jre。这两种方式的...

thinkyoung ⋅ 2015/12/31 ⋅ 0

win10下java的jdk安装和环境变量配置

首先需要去JAVA官网下载jdk http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html 下载的是jdk 9 与以往的环境配置不一样 jdk是java的核心 是java软件的开...

codingcoge ⋅ 03/09 ⋅ 0

Nginx+Tomcat负载均衡集群

通常情况下,一个tomcat站点由于可能出现单点故障及无法应对过多客户复杂多样的请求等问题,不能单独应用于生产环境下,所以我们需要一套更可靠的解决方案来完善Web站点架构。 Nginx是一款非...

cchenyz ⋅ 06/19 ⋅ 0

基于ClassLoader的java代码加密的经验分享

原理就是 生成项目时将待加密的java class文件通过加密算法转换生成加密的二进制文件,此文件不会被JD-GUI等反编译工具直接解密。 项目在启动时,用自定义的ClassLoader将加密的二进制文件进...

hxt168 ⋅ 06/06 ⋅ 0

Drools7.x环境搭建与简单示例

Drools是个规则引擎的开源实现。官方文档比较长。这里提供一个方法,搭建最基本的Drools运行环境,并提供一个简单示例。 环境准备: JDK 至少需要JDK 1.5以上,JDK去这里下载:http://www.or...

supergao222 ⋅ 01/10 ⋅ 0

在Ubuntu16.04.4上安装jdk

一、安装步骤 1.下载jdk安装包 首先我们在oracle官网上下载jdk-8u161-linux-x64.tar.gz,当然也可以下载其他版本的。 2.创建java的安装目录,并且解压该安装包,这里没有固定的解压目录,很类...

oO维尼熊Oo ⋅ 05/03 ⋅ 0

centos7 yum安装java运行环境,初识hadoop

安装java运行环境 1.实验机相关信息: [root@node2 ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [root@node2 ~]# uname -r 3.10.0-327.el7.x86_6 2.配置epel源,以y......

smile68 ⋅ 04/21 ⋅ 0

Ubuntu 16.04安装JDK/JRE并配置环境变量(为虚拟机配置JAVA环境)

由于需要安装交通仿真工具VanetMobiSim,而它又需要工作在Java环境,所以首先把安装Java环境的过程记录下来。 操作环境:VMware Workstation 10 安装包百度云链接:https://pan.baidu.com/s...

wuzhiwuweisun ⋅ 05/29 ⋅ 0

编写你的第一个HelloWorld

写在前面的话 因为Java基础是以后学习框架的基石,因此开个文集首先写写Java基础,本来想直奔基础知识的介绍,但是为了保证知识的完整性,因此从Java安装和运行“hello world”开始(虽然百度...

nanaFighting ⋅ 06/15 ⋅ 0

Maven的安装文字版(Windows/Linux/Mac)

以下内容引用自https://ayayui.gitbooks.io/tutorialspoint-maven/content/book/mavenenvironment_setup.html,安装信息更新到最新版本: Maven是基于Java的工具,所以首要必须的要求是你的电...

easonjim ⋅ 2017/05/07 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JavaScript零基础入门——(十)JavaScript的DOM基础

JavaScript零基础入门——(十)JavaScript的DOM基础 欢迎大家回到我们的JavaScript零基础入门,上一节课,我们了解了JavaScript中的函数,这一节课,我们来了解一下JavaScript的DOM。 第一节...

JandenMa ⋅ 42分钟前 ⋅ 0

Spring mvc DispatchServlet 实现原理

在Spring中, ContextLoaderListener只是辅助类,在web 容器启动的时候查找并创建WebApplicationContext对象,通过该对象进行加载spring的配置文件。而真正的逻辑实现其实是在DispatcherSer...

轨迹_ ⋅ 54分钟前 ⋅ 0

Weex起步

本教程假设你已经在你的本地环境安装了node 其实weex起步教程在 https://github.com/lilugirl/incubator-weex 项目说明文件中都已经有了,但为了有些同学看到英文秒变文盲,所以这里我重新写...

lilugirl ⋅ 今天 ⋅ 0

Jenkins实践1 之安装

1 下载 http://mirrors.jenkins.io/war/latest/jenkins.war 2 启动 java -jar jenkins.war 前提:安装jdk并配置环境变量 启动结果节选: ************************************************......

晨猫 ⋅ 今天 ⋅ 0

组合数学 1-2000 中,能被6或10整除的数的个数

1--2000 中,能被6或10整除的数的个数 利用集合的性质 能被6整除的个数 2000/6 = 333 能被10整除的个数 2000/10 = 200 能被6和10整除的个数 2000/30 = 66 能被6或10整除的个数 333+200-66 =...

阿豪boy ⋅ 今天 ⋅ 0

一篇文章学懂Shell脚本

Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合。 Shell可以直接使用在win/Unix/Linux上面,并且可以调用...

Jake_xun ⋅ 今天 ⋅ 0

大数据工程师需要精通算法吗,要达到一个什么程度呢?

机器学习是人工智能的一个重要分支,而机器学习下最重要的就是算法,本文讲述归纳了入门级的几个机器学习算法,加大数据学习群:716581014一起加入AI技术大本营。 1、监督学习算法 这个算法由...

董黎明 ⋅ 今天 ⋅ 0

Kylin 对维度表的的要求

1.要具有数据一致性,主键值必须是唯一的;Kylin 会进行检查,如果有两行的主键值相同则会报错。 2.维度表越小越好,因为 Kylin 会将维度表加载到内存中供查询;过大的表不适合作为维度表,默...

无精疯 ⋅ 今天 ⋅ 0

58到家数据库30条军规解读

军规适用场景:并发量大、数据量大的互联网业务 军规:介绍内容 解读:讲解原因,解读比军规更重要 一、基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务、行级锁、并发性能更好、CPU及...

kim_o ⋅ 今天 ⋅ 0

代码注释中顺序更改 文件读写换行

`package ssh; import com.xxx.common.log.LogFactory; import com.xxx.common.log.LoggerUtil; import org.apache.commons.lang3.StringUtils; import java.io.*; public class DirErgodic ......

林伟琨 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部