用java实现拷贝目录以及目录下文件

2023-10-26

用java实现拷贝目录以及目录下文件

  • 创建一个File对象 /也可以说是确定一个文件对象
    File f1 = new File(“D:\file”); //就相当于获取了这个文件对象,不管这个对象是否真实存在。

  • 对文件操作,所以方法里调用的都是File对象

  • 如果方法中不加static,会报这个错误。但如果main方法声明里不加static,下面的方法里也不用加,不会报错。

非静态方法的FileCopy(java.io.File文件, java.io.File文件)无法从静态上下文引用“”

  • 获取子目录,是获取了一个File对象数组

获取源下面的子目录
File[] files = srcFile.listFiles();

  • 新建目录要获取目录的绝对路径,再创建,用file.getAbsolutePath()获取路径,然后创建File对象,进行文件目录的创建。
  • 文件拷贝的话是用FileOutputStream和FileInputStream,来拷贝。

用FileInputStream来读文件,然后很重要的一步就是确定FileOutputStream对象要输出的路径,就是文件准备拷贝到哪个地方,要把路径给确定下来。

  • readCount=in.read(bytes)。in是FileInputStream对象,是要读取文件到bytes数组里,所以括号内一定要写bytes
  • out.write(bytes,0,readCount); 真正开始写是out.write方法
  • 最后,记得在递归结束条件里加return;!!!!!
package com.java.io;

import java.io.*;

public class CopyAll {
    public static void main(String[] args) throws Exception{
        File srcFile = new File("F:\\JavaSE相关文档与面试题");
        File destFile = new File("D:\\");

        FileCopy(srcFile,destFile);


    }

    public static void FileCopy(File srcFile,File destFile){

        if (srcFile.isFile()){
            //是文件的话,就要开始拷贝
            FileInputStream in =null;
            FileOutputStream out = null;
            try {
                in = new FileInputStream(srcFile);

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

                byte[] bytes = new byte[1024*1024];
                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 (in!=null){
                    try {
                        in.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (out!=null){
                    try {
                        out.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }

            return;
        }

        File[] files =srcFile.listFiles();
        for (File file :files){
//            System.out.println(file);
            if (file.isDirectory()){
                //新建对应目录
                //新建目录要获取目录的绝对路径,再创建
                String srcDir = file.getAbsolutePath();
                String destDir =( destFile.getAbsolutePath().endsWith("\\")?destFile.getAbsolutePath():destFile.getAbsolutePath()+"\\") +srcDir.substring(3);
                File newFile = new File(destDir);
                if(!newFile.exists()){
                    newFile.mkdirs();
                }
            }
                FileCopy(file,destFile);
            //此目录下可能还有字目录,往里面深挖
        }
















    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用java实现拷贝目录以及目录下文件 的相关文章

  • 详解 TS 中的子类型兼容性

    简介 在写 TypeScript 代码时经常遇到类型检查不通过的问题 这些问题根据编译器给出的错误提示以及修改建议多数可以快速修复 本文讲解的内容是编译器进行类型检查时的兼容性相关检查规则 这些规则在 TypeScript 语言背后默默发挥
  • 刷脸支付用户可以摆脱对手机介质的依赖

    支付宝与微信的刷脸支付设备落地体量约在10万台左右 同时云闪付也在广州 杭州等七个城市陆续上线了 刷脸付 从安装数量看 刷脸设备的总体落地效果理想 现在商家对使用扫码支付服务具有很强的依赖性 且担心刷脸支付因为技术与道德问题而遭遇不必要的麻
  • 【uni-app】响应式单位rpx

    单位 rpx是响应式px rpx是一种根据屏幕宽度自适应的动态单位 以750宽的屏幕为基准 750rpx正好是屏幕的宽度 屏幕变宽 rpx实际显示效果会等比放大 但在App端和h5端 屏幕宽度达到960px时 默认将按照375px的屏幕宽度
  • linux增加nfs的inode,使用NFS时出现nfs_inode_cache占用内存过高问题的解决

    使用NFS时出现nfs inode cache占用内存过高问题的解决 来源 IT165收集 发布日期 2014 04 14 20 52 06 一 现象 运行了使用NFS文件系统的应用程序后 内存缓慢泄漏 最后导致整个服务器的内存全部耗尽 系
  • 向量微积分基础

    本文首发在我的个人博客 https jlice top p 7kemt 欢迎大家前去参观 么么哒 机器学习里经常需要用到向量微积分 向量微积分其实并不难 但大学数学一般不提 导致在看机器学习的一些推导时常常感觉疑惑 机器学习里经常用到标量和
  • python3 华为推送系统接入

    只是后台对接华为推送服务接口对接 前端集成还是请参考官方文档 根据AppID和AppSecret 获取请求token 根据token发送http请求 获取token 请注意token的有效时间 不避免频繁获取 def get access
  • 基于深度学习的小学语文“输出驱动”教学研究课题方案

    目录 一 课题研究的背景与意义 二 课题研究理论依据 三 国内外研究情况
  • CheckStyle使用手册

    介绍 CheckStyle是SourceForge下的一个项目 提供了一个帮助JAVA开发人员遵守某些编码规范的工具 它能够自动化代码规范检查过程 从 而使得开发人员从这项重要 但是枯燥的任务中解脱出来 CheckStyle默认提供一下主要
  • 用VC 6.0实现串行通信的三种方法

    摘要 本文介绍了在Windows平台下串行通信的实现机制 讨论了根据不同的条件用Visual C 设计串行通信程序的三种方法 并结合实际 实现对温度数据的接收监控 在实验室和工业应用中 串口是常用的计算机与外部串行设备之间的数据传输通道 由
  • 数据挖掘常用的基本技术,主要有哪些?

    1 统计学 统计学虽然是一门 古老的 学科 但它依然是最基本的数据挖掘技术 特别是多元统计分析 如判别分析 主成分分析 因子分析 相关分析 多元回归分析等 2 聚类分析和模式识别 聚类分析主要是根据事物的特征对其进行聚类或分类 即所谓物以类
  • 【转】多层级的makefile编写——递归调用makefile

    转自 多层级的makefile编写 递归调用makefile wangyuling1234567890的专栏 博客频道 CSDN NET http blog csdn net wangyuling1234567890 article det
  • 测试框架pytest教程(7)实现 xunit 风格的setup

    pytest支持setup和teardown 对于使用unittest和nose框架的用户来说对这些很熟悉 但是在pytest可以使用功能更强大的fixture来实现固定装置 模块级别 如果单个模块中有多个测试函数和测试类 您可以选择实现以
  • 计算机网络相关知识点

    计算机网络知识点 1 流量单位换算 2 概念和单位换算 3 计算机网络概述 4 例题 本文参考资料一 GitHub上的博客CS Notes 本文参考资料二 百度文库计算机网络知识点文档 1 流量单位换算 计算机中表示容量的单位有B KB M
  • MySQL5.7 下载安装

    一 下载 尽量使用压缩包解压缩方式安装 压缩包的解压后配置下环境变量就能使用 如果使用安装程序 msi安装程序 安装 卸载起来会比较麻烦 下载地址链接 各版本下载链接 二 安装 1 解压缩 下载的zip压缩包解压缩 我的mysql解压缩安装
  • AttributeError: ‘str‘ object has no attribute ‘parse‘

    今天 使用python提取版本号 pip3 install packaging from packaging import version A 3 5 2 version parse A 发现报错 AttributeError str ob
  • golang开发:类库篇(三)命令行工具cli的使用

    为什么要使用命令行 觉得这个问题不应该列出来 又觉得如果初次进行WEB开发的话 可能会觉得所有的东西都可以使用API去做 会觉得命令行没有必要 其实 一个生产的项目命令行是绕不过去的 比如运营需要导出报表 统计下付费用户 服务不稳定修改下订
  • 推荐引擎系统架构

    本文从互联网收集并整理了推荐系统的架构 其中包括一些大公司的推荐系统框架 数据流存储 计算 模型应用 可以参考这些资料 取长补短 最后根据自己的业务需求 技术选型来设计相应的框架 后续持续更新并收集 界面UI那一块包含3块东西 1 通过一定
  • vue3高德地图点击标记显示自定义提示框/地图平移过渡(panBy/panTo)

    上一篇文章有讲到点击标记显示窗口信息 但是在实际的项目需求中我们可能需要在某一个固定的地方显示自定义的内容 这里就需要我们自己动手了 4条消息 vue3高德地图多个点标记 窗口信息 点标记自定义图片不显示问题 奋斗不息 编码不止 的博客 C
  • 【MySQL】八,角色管理

    创建角色 引入角色的目的是方便管理拥有相同权限的用户 恰当的权限设定 可以确保数据的安全性 语法 CREATE ROLE role name host name role name host name 创建一个经理的角色 create ro
  • 基于Uniapp+SpringBoot+Vue的电影交流平台小程序设计与实现(源码+lw+部署文档+讲解等)

    前言 博主介绍 全网粉丝10W CSDN特邀作者 博客专家 CSDN新星计划导师 全栈领域优质创作者 博客之星 掘金 华为云 阿里云 InfoQ等平台优质作者 专注于Java 小程序技术领域和毕业项目实战 精彩专栏 推荐订阅 2023 20

随机推荐

  • FreeRTOS笔记(九)定时器

    定时器Timer 软件定时器是基于系统时钟中断且由软件来模拟的定时器 当经过设定的Tick 时钟计数值后会触发用户定义的回调函数 软件定时器不占用单片机宝贵的硬件资源和CPU资源 FreeRTOS提供了完善的软件定时器的支持 为了启用软件定
  • JAVA对象的toString方法

    一切类都是Object的子类 Object有toString方法 因此所有对象都有toString方法 打印一个对象时 打印的就是这个对象的toString方法返回值 值为 类名 hashCode 因此很多时候需要程序员重写此方法 推荐写法
  • Python运维开发(CMDB资产管理系统)——Python基础数据类型

    Python基础数据类型 字符串 可以通过单引号 双引号 三个双引号来表示 布尔 True和False 整数 浮点数 列表 定义一个列表 列表常用的一些函数 append 向列表中添加元素 元素可以是整数 浮点数 字符串等类型 count
  • 云财经服务器维护,云财经服务器维护

    云财经服务器维护 内容精选 换一换 云耀云服务器适用于对CPU 内存 硬盘空间和带宽无特殊要求 服务一般只需要部署在一台或少量的服务器上 一次投入成本少 后期维护成本低的场景 例如网站开发 Web应用 推荐使用云耀云服务器 主要提供均衡的计
  • 【vim工具的使用】

    目录 前言 一 普通 命令模式 1 文件中移动 1 2 文件中移动 2 3 复制 粘贴 剪切 删除 4 行内删除 5 撤回 6 替换 7 高亮选中 8 逐单词移动 3 二 底行模式 1 退出vim 2 设置行号 3 替换 4 搜索 3 不退
  • IntelliJ IDEA 创建spring boot项目报错:Cannot download 'https://start.spring.io'

    IEAD默认使用https start spring io 把上面地址改成http start spring io即可
  • 华为OD机试 - 矩阵扩散(Java)

    题目描述 存在一个m n的二维数组 其成员取值范围为0或1 其中值为1的成员具备扩散性 每经过1S 将上下左右值为0的成员同化为1 二维数组的成员初始值都为0 将第 i j 和 k l 两个个位置上元素修改成1后 求矩阵的所有元素变为1需要
  • Host key verification failed.

    一 问题描述 在 ssh 连接某台服务器的时候 报错如下 ECDSA host key for 172 xxx xxx xxx has changed and you have requested strict checking Host
  • valgrind

    http blog csdn net yanghao23 article details 7514587 valgrind通常用来成分析程序性能及程序中的内存泄露错误 一 Valgrind工具集简绍 Valgrind包含下列工具 1 mem
  • Mathtype7的安装及使用方法

    换了电脑 以前那个安装的mathtype无了 最近又要写论文 尝试了个新的mathtype安装方法 可提供参考 首先 下载正版mathtype7 下载链接 win系统下载win版 安装mathtype 以管理员身份运行 东西都默认即可 安装
  • dos命令操作mysql数据库的常用语句

    一 连接MYSQL 格式 mysql h主机地址 u用户名 p用户密码 1 连接到本机上的MYSQL 首先打开DOS窗口 然后进入目录mysql bin 再键入命令mysql u root p 回车后提示你输密码 注意用户名前可以有空格也可
  • 二叉树结构与算法思路解析

    二叉树 介绍 主要内容 二叉树的概念和性质 二叉树的存储结构 遍历二叉树 递归遍历 非递归遍历 线索二叉树 哈夫曼树 树和森林 树和森林的存储 树和森林与二叉树的转换 树和森林的遍历 树型结构特点 一对多 例 自然界 树 人类社会 家谱 新
  • 一次线性回归拟合、二次线性回归拟合

    器学习一次回归和二次回归 reshape 行 列 可以根据指定的数值将数据转换为特定的行数和列数 reshape 1 1 之后 数据集变成了一列 采用线性回归方程预测 lr LinearRegression lr fit X y from
  • 重复元素判定续。利用集合的无重复性改编上一个程序,获得一个更快更简洁的版本

    ls eval input 请输入一个列表 if ls list set ls print True
  • Java基础(二)——数组、类和对象

    一 数组 1 声明并创建数组 数据类型 数组名 new 数据类型 大小 2 新生成的数组对象 其中所有的引用自动初始化为null 基本数据类型 数值型自动初始化为0 字符型为0 布尔型为false 3 数组赋值方法 1 边声明边赋值 静态初
  • map.get(key)空指针异常_NPE空指针异常总结

    一 java lang NullPointerException出现的几种原因 1 字符串变量未初始化 2 接口类型的对象没有用具体的类初始化 比如 Map map 会报错 Map map new Map 则不会报错了 3 当一个对象的值为
  • uniapp点击事件修改元素样式

    1 要有一个dom元素 用ref绑定 2 获取到dom元素并操作样式
  • 相机坐标系的正向投影和反向投影

    1 正向投影 世界坐标系到像素坐标系 世界3D坐标系 x y z 到图像像素坐标 u v 的映射过程 1 世界坐标系到相机坐标系的映射 两个坐标系的转换比较简单 就是旋转矩阵 平移矩阵 旋转矩阵则是绕X Y Z 轴旋转获得 R 属于世界坐标
  • 网络文件共享服务主流----FTP文件传输协议

    网络文件共享服务主流 FTP文件传输协议 ftp定义 ftp数据连接模式 ftp应用程序 vsftpd vsftpd虚拟用户配置 网络文件共享服务主流 FTP文件传输协议 ftp定义 文件传输协议 File Transfer Protoco
  • 用java实现拷贝目录以及目录下文件

    用java实现拷贝目录以及目录下文件 创建一个File对象 也可以说是确定一个文件对象 File f1 new File D file 就相当于获取了这个文件对象 不管这个对象是否真实存在 对文件操作 所以方法里调用的都是File对象 如果