博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java利用ftpClient来创建多层目录文件
阅读量:5879 次
发布时间:2019-06-19

本文共 4641 字,大约阅读时间需要 15 分钟。

hot3.png

//改变目录路径 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;    }

转载于:https://my.oschina.net/u/2263272/blog/847427

你可能感兴趣的文章
Android系统的创世之初以及Activity的生命周期
查看>>
彻底解决Linux下memcached的安装
查看>>
人人都会数据采集- Scrapy 爬虫框架入门
查看>>
Android网络编程11之源码解析Retrofit
查看>>
esxi主机之添加新用户的访问权限
查看>>
AD账户被锁信息通知脚本
查看>>
数据集市和数据仓库的关系
查看>>
python 断言
查看>>
在Centos 5.6下面利用instant 安装oracle客户端
查看>>
用虚拟环境保存库文件--Python打包
查看>>
NoSQL数据库一MongoDB基本使用
查看>>
/proc/sys/vm/drop_caches用法备忘
查看>>
selinux 常用命令
查看>>
linux中KVM桥接网卡br0
查看>>
Redis的安装和使用之一 -----Redis相关运用
查看>>
snmp安装
查看>>
spring mvc 批量上传+文件上传
查看>>
Asm Instance Parameter Best Practice
查看>>
思科路由器寄存器值
查看>>
发送验证邮件的三种方法
查看>>