文档章节

Java 复制文件和目录

枯藤KT
 枯藤KT
发布于 2015/10/19 11:46
字数 398
阅读 69
收藏 6
点赞 1
评论 0
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.lang.RuntimeException;
public class Copy {
    private static void copyFile(File from, File to) {
        System.out.println("开始拷贝文件:" + from.getAbsolutePath() + " --------> " + to.getAbsolutePath());
        byte buf[] = new byte[1024];
        int count = 0;
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        try {
            bis = new BufferedInputStream(new FileInputStream(from));
            bos = new BufferedOutputStream(new FileOutputStream(to));
            if (bis != null && bos != null) {
                while ((count = bis.read(buf)) != -1) {
                    bos.write(buf, 0, count);
                    bos.flush();
                }
            }
        } catch (IOException e) {
            throw new RuntimeException("文件复制异常!", e);
        } finally {
            try {
                if (bis != null)
                    bis.close();
                if (bos != null)
                    bos.close();
            } catch (IOException ex) {
                throw new RuntimeException("文件关闭失败!", ex);
            }
        }
    }
    private static void copyDir(File fromDir, File toDir) {
        if (!toDir.exists()) {
            toDir.mkdirs();
        }
        File[] files = fromDir.listFiles();
        for (File f : files) {
            if (f.isFile()) {
                File t = new File(toDir, f.getName());
                if (confirmRewrite(t)) {
                    copyFile(f, t);
                } else {
                    continue;
                }
            } else if (f.isDirectory()) {
                if (f.getName().equals(toDir.getName())) {
                    continue;
                }
                copyDir(f, new File(toDir, f.getName()));
            }
        }
    }

    private static boolean confirmRewrite(File to) {
        if (to.exists()) {
            System.out.print("文件已经存在,是否覆盖?[y|n]:");
            char confirm;
            try {
                confirm = (char) System.in.read();
                System.in.skip(System.in.available());
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
            if (confirm == 'y')
                return true;
            else
                return false;
        } else {
            return true;
        }
    }
    public static void main(String args[]) {
        if (args.length != 2) {
            System.err.println("Arguments num error!");
            System.err.println("usage:java Copy " + "from  to");
            return;
        }
        File from = new File(args[0]);
        File to = new File(args[1]);
        if (!from.exists())
            throw new RuntimeException(new FileNotFoundException("文件或目录不存在!"));
        /*
         * 目的地存在的话,如果是文件,则源地址也必须是文件;如果目的地是目录,源地址可以是文件,也可以是目录。
         */
        if (to.exists()) {
            // 如果目的地址存在
            if (to.isFile() && from.isFile()) {
                if(confirmRewrite(to)){
                    copyFile(from, to);
                }else{
                    return;
                }
            } else if (to.isDirectory()) {
                if (from.isFile()) {
                    File temp=new File(to, from.getName());
                    if(confirmRewrite(temp))
                        copyFile(from, temp);
                } else {
                    copyDir(from, to);
                }
            } else {
                throw new RuntimeException(new IOException("不允许将目录复制到文件!"));
            }
        } else {
            // 如果目的地址不存在
            if (from.isFile()) {
                copyFile(from, to);
            } else {
                to.mkdirs();
                copyDir(from, to);
            }
        }
    }
}

© 著作权归作者所有

共有 人打赏支持
枯藤KT

枯藤KT

粉丝 4
博文 97
码字总数 60123
作品 0
昌平
程序员
PHP与Java进行通信的实现方法

PHP与Java进行通信的实现方法缘起: 最近做了一个电商平台与网银整合的小东西,程序是开源的 Ecmall的,网银的接口也很规范,给出的文档很全,唯一的小问题是,网银使用的签名和验签的lib是只...

Yomut
07/03
0
0
protocol buffer 对socket协议封装成二进制传输

protocol buffer 是 google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了三种语言的实现:java、c++ 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是...

MrLovelyCbb
2012/02/15
0
0
protocol buffer

protocol buffer 是 google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了三种语言的实现:java、c++ 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是...

MrLovelyCbb
2011/12/08
0
0
ubuntu14.04 LTS 配置jdk1.7.0_80

Ubuntu操作系统下如何手动安装JDK1.7呢?本文是我经历的全过程。 Ubuntu版本:14.04 LTS JDK版本:1.7.004 安装目录:/usr/local/development/jdk1.7.004 第一步 安装JDK1.7的过程 1. 打开网...

robingao
2015/11/02
0
0
java Service warpper安装说明

Java Service Wrapper 官方网站:http://wrapper.tanukisoftware.com 下载地址:http://wrapper.tanukisoftware.com/doc/english/download.jsp 概述: Java Service Wrapper可以把Java应用程......

郭恩洲_OSC博客
2015/03/06
0
0
对java的反编译插件jad的用后感

刚开始我在网上下载了jad这个工具就以为可以进行java的反编译了,没想到还要下载一个jadclipse,然后在网上找了N久终于找到关于这两个东西装到eclipse的方法,首先是把jadclipse.jar包复制到...

小fa
2012/09/15
0
0
ubuntu12.10安装JDK6

安装了ubuntu12.10,折腾了一下,终于将JDK6安装成功了。以此记录一下。 1. 去官网下载JDK6,我下载后的保存路径为/home/kanner/下载/jdk-6u38-linux-i586.bin 2.在/usr/lib新建java目录:s...

陈佳庆
2013/01/20
0
3
加固你的TOMCAT,让TOMCAT在chroot的环境下运行

众所周知,chroot下linux系统的一个安全机制,chroot是linux内核的一个系统调用,通过它,可以设定应用软件的运行环境,让应用软件运行在一个特定目录下,这样,即使应用软件有安全漏洞,被入...

学思
2014/11/10
0
1
Centos7上搭建hadoop2.7分布式集群环境实验记录

ps:因为实验需要和学习过程,为了更好学习hadoop,所以为了方便记录以及供学习交流,特此做一份hadoop搭建实验记录。 1.准备三台虚拟机。 2.修改三台虚拟机的主机名分别为master,slave01,sl...

mukvintt
04/15
0
0
Linux下Java开发环境快速搭建指南

一、系统说明 操作系统是Ubuntu12.04,32位的 。 二、安装JDK7 1、到Oracle官网上下载jdk-7u21-linux-i586.tar.gz。 2、将jdk-7u21-linux-i586.tar.gz拷贝到/usr/local/java/目录下面,这里如...

JackieYeah
2013/06/27
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

崛起于Springboot2.X之前端模版freemaker(23)

1、配置文件 spring: freemarker: allow-request-override: false cache: true check-template-location: true charset: UTF-8 content-type: text/html ......

木九天
19分钟前
1
0
spring-boot:run启动时,指定spring.profiles.active

Maven启动指定Profile通过-P,如mvn spring-boot:run -Ptest,但这是Maven的Profile。 如果要指定spring-boot的spring.profiles.active,则必须使用mvn spring-boot:run -Drun.profiles=test......

夜黑人模糊灬
21分钟前
0
0
大数据分析挖掘技术学习:Python文本分类

引言 文本分类作为自然语言处理任务之一,被广泛应用于解决各种商业领域的问题。文本分类的目的是将 文本/文档 自动地归类为一种或多种预定义的类别。常见的文本分类应用如下: • 理解社交媒...

加米谷大数据
26分钟前
0
0
istio-0.8 指标监控,prometheus,grafana

配置: https://istio.io/docs/tasks/telemetry/metrics-logs/ https://istio.io/docs/tasks/telemetry/tcp-metrics/ envoy拦截请求>上报mixer>对接prometheus>grafana 效果截图: promethe......

xiaomin0322
28分钟前
0
0
公众号推荐

阿里技术 书籍:《不止代码》

courtzjl
31分钟前
0
0
关于改进工作效率

1.给不同的业务线建立需求群,所有的数据需求都在群里面提。 2.对于特别难搞定的事情,到对应的技术哪去做,有问题随时沟通。 3.定期给工作总结形成方法论。 4.学习新的技术,尝试用新的方法...

Avner
37分钟前
0
0
关于thinkphp 框架开启路径重写,无法获取Authorization Header

今天遇到在thinkphp框架中获取不到header头里边的 Authorization ,后来在.htaccess里面加多一项解决,记录下: <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews Rewrite......

殘留回憶
41分钟前
0
0
centos 使用yum安装nginx后如何添加模块 10

centos 使用yum安装nginx后如何添加模块 10 centos6.2版本,使用yum来安装了nginx,但是最近需要重新添加模块,所以就傻了,询问下有人知道怎么重新添加模块吗? PS:俺是新手,需要高手救助...

linjin200
44分钟前
1
0
dubbo 资料

dubbo资料网站: https://www.cnblogs.com/a8457013/p/7818925.html

zaolonglei
45分钟前
0
0
大型网站,你是如何架构的?

大型网站,你是如何架构的?

微小宝
47分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部