Java 目录拷贝

目录拷贝

import java.io.*;

/**
 * 目录拷贝
 */
public class CopyAll {
    public static void main(String[] args) {

        File srcFile = new File("D:\\StudySource\\Java\\powernode\\文本笔记");

        File destFile = new File("F:\\Java 目录拷贝\\");

        copyAll(srcFile, destFile);
    }

    private static void copyAll(File srcFile, File destFile) {

        if (srcFile.isFile()) {

            // 是文件,递归结束,开始拷贝
            FileInputStream in = null;
            FileOutputStream out = null;

            try {
//                in = new FileInputStream(srcFile.getAbsoluteFile());
                // 或者这么写
                in = new FileInputStream(srcFile);

                byte[] bytes = new byte[1024 * 1024];

                out = new FileOutputStream((destFile.getAbsolutePath().endsWith("\\") ?
                        destFile.getAbsolutePath() : destFile.getAbsolutePath() + "\\" )
                        + srcFile.getAbsolutePath().substring(3));

                int readCount = 0;

                while((readCount = in.read(bytes)) != -1){
                    out.write(bytes,0, readCount);
                }
                out.flush();

            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (out != null) {
                    try {
                        out.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (in == null) {
                    try {
                        in.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
            return;
        }

        File[] files = srcFile.listFiles();
        // 如果是目录,则需要对应新建目录

        for (File f : files) {

            if (f.isDirectory()){

                String srcDir = f.getAbsolutePath();    // 原文件绝对路径

                String srcDir2 = srcDir.substring(3);   //截掉前面的盘符

                // 这里是因为有时候复制到 F:\\ 和 F:\\a\\b\\ 下读取的绝对路径不一样
                String destDir = (destFile.getAbsolutePath().endsWith("\\") ?
                                    destFile.getAbsolutePath() : destFile.getAbsolutePath() + "\\" )
                                    + srcDir2;

                // 新建一个 File 对象
                File newFile = new File(destDir);

                // 目录不存在,则以多重目录的方式新建目录
                if (!newFile.exists()){
                    newFile.mkdirs();
                }
            }
            // 递归
            copyAll(f, destFile);
        }
    }
}

原文地址:https://www.cnblogs.com/yerun/p/12687249.html

时间: 2024-08-02 19:59:21

Java 目录拷贝的相关文章

Java NIO.2 —— 文件或目录拷贝操作

拷贝整个文件树是可以递归每个目录和文件调用 Files.copy()方法.在使用的时候有一下注意事项. 在往目录拷贝文件之前,首先要保证目录已经存在.拷贝源目录(不论是否为空)都会生成目标目录.整个任务一定在preVisitDirectory()方法中执行. visitFile()方式用来拷贝每个文件最佳的方法. 在你拷贝目录或文件时,你需要决定是否要使用REPLACE_EXISTING 和COPY_ATTRIBUTES 选项. 如果你想保存要拷贝的目录的属性,你需要在postVisitDire

[基础] Java目录(摘自Java核心技术·卷1 基础知识)

Java核心技术·卷1 基础知识(原书第9版) 第1章 Java程序设计概述 1.1 Java程序设计平台 1.2 Java"白皮书"的关键术语 1.2.1 简单性 1.2.2 面向对象 1.2.3 网络技能 1.2.4 健壮性 1.2.5 安全性 1.2.6 体系结构中立 1.2.7 可移植性 1.2.8 解释型 1.2.9 高性能 1.2.10 多线程 1.2.11 动态性 1.3 Java applet与Internet 1.4 Java发展简史 1.5 关于Java的常见误解

idea创建maven-archetype-webapp项目无java目录

使用idea创建一个maven-archetype-webapp项目 查看项目的目录结构,在main的目录下没有java目录 在main目录下创建java目录 使用快捷键 ctrl+alt+shift+s打开项目体系结构,或者点击右上角的这个图标 进行如下配置 选中创建的java目录,然后点击蓝色文件夹图标source,再然后点击Apply即可 完成后就可以看到下面的效果

解决Idea创建maven-archetype-webapp项目无java目录的问题

一.背景 在适用IDEA创建maven-archetype-webapp项目的时候,创建完成后发现在main文件夹下没有java源文件夹,不少小伙伴也遇到该问题,但不知道怎么解决,下面我就来分享解决步骤. 二.解决步骤 1.解决之前项目结构如下: 2.选择File->Project Structure... 3.选择Modules选项卡下面的Sources项,在main文件夹上右键,选择New Folder...并点击OK 4.输入要创建的文件夹名称java,并点击OK继续 5.在创建好的jav

java目录相关操作 示例代码

package org.rui.io; import java.io.File; import java.io.FilenameFilter; import java.util.Arrays; import java.util.regex.Pattern; /** * 目录列表器 测试 * * @author lenovo * */ //Args:"C:/Users/lenovo/Pictures/screen/*\.jpg" public class DirList { public

Java 对象拷贝答疑

Java 对象拷贝答疑 @author ixenos 关于clone[对象拷贝] 在实际编程过程,有时候我们会遇到一种情况:当你有一个对象A,在某一个时刻,A已经保存了对应的属性值,而且这些值本身是有效的,这个时候可能需要一个和A完全相同的对象B,并且当B里面的属性值发生变化的时候,A中的属性值不受影响,可以理解为A和B独立,但是B的初始化不是按照我们平时创建该对象的时候的初始化操作,B的初始化数据完全来自A. 对Java存储模型了解的人都明白,在Java里面如果针对两个对象引用采取赋值操作的时

递归遍历目录拷贝cdh下的lib到一个目录

destpath='/home/hadoop/soft/hadoop-2.0.0-cdh4.5.0/cdhlib/'jarpath='/home/hadoop/soft/hadoop-2.0.0-cdh4.5.0/share/hadoop/'search='jar' iterdir(){    cd $1    for p in `ls`; do        echo "$p" |grep -q "$search"        if [ $? -eq 0 ]  

编写一个程序,将 d: \ java 目录下的所有.java 文件复制到d: \ jad 目录下,并 将原来文件的扩展名从.java 改为.jad

1.编写一个程序,将 d: \ java 目录下的所有.java 文件复制到d: \ jad 目录下,并 将原来文件的扩展名从.java 改为.jad package copy; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; i

java提高(15)---java深浅拷贝

#java深浅拷贝 一.前言 为什么会有深浅拷贝这个概念? 我觉得主要跟JVM内存分配有关,对于基本数据类型,只存在栈内存,所以它的拷贝不存在深浅拷贝这个概念.而对于对象而言,一个对象的创建会在内存中分配两块空间,一个在栈内存存对象的引用指针,一个在堆内存存放对象.这个时候会有一个问题,你拷贝的只是这个引用指针还是拷贝两块内存一起拷贝,这个时候就会有深浅拷贝一说. 还有之前我认为Arrays.copyOf()是深度拷贝,亲测后发现原来它也是浅拷贝.下面进行具体说明. 二.数据类型 数据分为基本数