用Java实现目录复制(包含此目录下的所有文件与目录)
需求:将指定目录复制到指定路径下。
1、复制时目录内的子目录以及子文件的结构和内容与源目录相同。
2、目录名与源目录名可能相同,也可能不同。
分析:
假设源目录为:D:\dir 目标目录为:E:\copy
目标目录与源目录名不同时的复制情况:
目标目录与源目录名相同时的复制情况:
复制一个目录时,要先确认好目标目录是否存在,如果不存在则将目标目录创建好,之后遍历源目录下的所有文件和子目录,将这些文件与子目录复制下来
复制子目录时,同上。所以,这里要用到递归,在复制目录的方法里遍历源目录,判断所遍历到的是目录时,再次调用复制目录的方法
复制文件时用字节流将源文件中的数据写入到目标文件中
代码实现:
复制目录(与源目录名不同)
//复制目录public static void copyDirectory(File in, File out){//判断目标目录是否存在if (!out.exists()) {//目标目录不存在,创建此目录out.mkdir();}//获取目标目录绝对路径String path = out.getPath();//获取源目录下的所有目录、文件,并遍历File[] inFiles = in.listFiles();for (File file : inFiles) {//更改目标路径out = new File(path, file.getName());//判断file是否为目录,//如果是目录则复制此目录,如果不是则复制此文件if (file.isDirectory()) {copyDirectory(file, out);} else {copyFile(file, out);}}}
复制目录(与源目录名相同)
//复制目录public static void copyDirectory(File in, File out){//获取目标目录绝对路径String path = out.getPath();//更改目标路径out = new File(path, in.getName());//判断目标目录是否存在if (!out.exists()) {//目标目录不存在,创建此目录out.mkdir();}//获取源目录下的所有目录、文件,并遍历File[] inFiles = in.listFiles();for (File file : inFiles) {//判断file是否为目录,//如果是目录则复制此目录,如果不是则复制此文件if (file.isDirectory()) {copyDirectory(file, out);} else {File outFile = new File(out, file.getName());copyFile(file, outFile);}}}
复制文件
//复制文件public static void copyFile(File in, File out){FileInputStream fis = null;FileOutputStream fos = null;try {//创建输入输出流fis = new FileInputStream(in);fos = new FileOutputStream(out);//复制文件————读取源文件数据,写入到目标文件byte[] data = new byte[1024];int len;while ((len = fis.read(data)) != -1) {fos.write(data, 0, len);}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {//关闭流if (fis != null) {try {fis.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if (fos != null) {try {fos.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}
主函数
public static void main(String[] args) {File in = new File("源目录");File out = new File("目标目录");copyDirectory(in, out);}
用Java实现目录复制(包含此目录下的所有文件与目录)相关推荐
- Java io流---拷贝文件夹下的所有文件和目录
Java io流-拷贝文件夹下的所有文件和目录 代码: package demo01;import java.io.*; import java.util.TreeMap;public class C ...
- 安装jdk后出现bash: ./java: /lib/ld-linux.so.2: bad ELF interpreter: 没有那个文件或目录
cenos安装jdk会遇到的问题: 配置完环境变量后用java -version测试出现"bash: ./java: /lib/ld-linux.so.2: bad ELF interpre ...
- java 用于xcopy复制_利用xcopy命令实现本地文件复制到远程服务器的方法
利用xcopy命令实现本地文件复制到远程服务器的方法 更新时间:2013年05月08日 10:52:36 作者: 把本地文件复制到远程服务器:用Xcopy命令可以做到,具体实现如下,感兴趣的朋友可 ...
- 删除该目录下所有的文件和目录
题目 删除该目录下所有的文件和目录 分析 可以使用递归来进行删除,每一次调用递归都删除其里边的文件,当递归回调的时候删除那些已经被删空的文件夹 程序代码 package com.company.dem ...
- C#中拷贝指定文件夹下的所有文件夹目录到指定文件夹中的方法
原文地址:http://www.biye5u.com/article/Csharp/fileprog/2011/4198.html 本文给出了一个在C#中拷贝指定文件夹下的所有文件夹目录到指定文件夹中 ...
- Mac根目录下无法创建文件或目录-报错 mount_apfs: volume could not be mounted: Operation not permitted mount: / fail
Mac根目录下无法创建文件或目录- 报错 /data: Read-only file system 报错 mount_apfs: volume could not be mounted: Operat ...
- Java 7 中 NIO.2 的使用——第四节 文件和目录
Files类提供了很多方法用于检查在于你真正实际去操作一个文件或目录.这些方法强烈推荐,也非常有用,也能避免很多异常的发生.例如,一个很好的习惯就是在你试着移动一个文件从一个地方到另一个地方的时候,先 ...
- 文件节点的linux指令,Java工程师必学的Linux命令(一)文件与目录管理
从本篇文章开始,我将总结一些Java工程师日常研发工作中会使用到的Linux命令,在介绍这些命令的过程中,也会对Linux系统的一些基础知识进行普及.希望对大家工作和学习有所帮助吧. 本篇将从文件与目 ...
- java 遍历目录下所有文件_java实现遍历某个目录(包括子目录)下的所有文件
在java中遍历一个文件夹里边的所有文件,可以有两种方式: 一.递归遍历 通常也是开发者第一时间能想到的方法. 递归遍历的优点是: 实现起来相对简单,代码量相对较少,执行效率较高. 缺点是: 比较吃内 ...
最新文章
- 16x16点阵汉字c语言,16x16led点阵滚动汉字显示设计。
- linux grep命令详解
- 神经网络设计神经网络
- python GUI开发
- 字符识别Python实现 图片验证码识别
- 面试中关于多线程同步,你必须要思考的问题
- 物联网商机迸发 LPWAN芯片现身 本文转自d1net(转载)
- Ubuntu14.04 Apollo 3.5安装
- linux 系统文件目录颜色及特殊权限对应的颜色
- curl and wget
- verilog 数据格式
- java 扫雷 实验报告_java实现简单扫雷
- vue报错 | Duplicate keys detected: ‘0’. This may cause an update error.
- BUU刷题记录-[0CTF 2016]piapiapia
- 用onetab插件管理chrome的tab页,解决.crx安装时显示invalid的问题
- 网址短连接 short url
- python_练习2:输入a,b,c,d 4个整数,计算a+b-c*d的结果
- laravel实现文件下载功能
- 矩阵分解--超详细解读
- Excel 上传和下载
热门文章
- AD中的机械尺寸定位的使用
- 在html中写响应式布局的代码,CSS实现响应式布局的方法
- C_004 C语言 控制语句之分支语句
- 锂离子电池电量计原理概述
- 一些关于KIRIKIRI及2等等等等的研究资料- -
- 分享 10 个高星的创意项目!
- 【rviz】出现“For frame [laser]: Fixed Frame [map] does not exist”错误
- Flutter实践——AndroidStudio环境初体验
- MySQL-视图-触发器-事务-存储过程-函数-流程控制-索引与慢查询优化-06
- Java笔记——Java多线程~