package copy;
/*
需求:复制多级文件夹
复制d:\\itcast(包含文件和子文件夹)到模块目录下
分析:
d:\\itcast
a.txt
b.txt
javaweb
a.xml
b.xml
模块\\itcast
javaweb
a.xml
b.xml
a.txt
b.txt
思路:
1.判断源文件是目录还是文件
2.是目录:
1.源目录名+目的目录,创建新目录File对象
2.判断新目录File是否存在,不存在则创建
3.获取源目录文件列表
4.遍历得到每个源文件对象
5.递归调用copyFolder方法
3.是文件:
复制源文件到目的目录
*/ import java.io.*; public class CopyFolder {
public static void main(String[] args) throws IOException {
//创建源目录
File srcFolder = new File("d:\\itcast");
//创建目的目录
File dstFolder = new File("day10Home"); //调用复制方法,复制目录或文件
copyFolder(srcFolder, dstFolder);
} /**
* 文件是否存在的检查工作,应该由方法调用者保证。
* @param src
* @param dst
* @throws IOException
*/
private static void copyFolder(File src, File dst) throws IOException {
//1.是目录
if(src.isDirectory()){
//1.源目录名+目的目录,创建新目录File对象
File newFolder = new File(dst, src.getName()); //2.判断新目录File是否存在,不存在则创建
if(!newFolder.exists())
newFolder.mkdir(); //3.获取源目录文件列表
File[] fileArray = src.listFiles(); //4.遍历得到每个源文件对象
for(File srcFile : fileArray){
//5.递归调用copyFolder方法
copyFolder(srcFile, newFolder);
}
}else{
// 2.是文件,根据目的目录+源文件名,创建新文件
File newFile = new File(dst, src.getName());
copyFile(src, newFile);
}
} private static void copyFile(File srcFile, File newFile) throws IOException {
// 创建字节缓冲流对象
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile)); // 读写数据,一次读写一个字节数组
byte[] bys = new byte[1024];
int len;
while((len = bis.read(bys)) != -1){
bos.write(bys, 0, len);
} // 释放资源
bos.close();
bis.close();
}
}

  案例2:删除多级文件夹

 package deletefolder;

 import java.io.File;

 /*
需求:
将d:\\itcast多级文件夹删除
d:\\itcast
javaweb
a.xml
a.txt
b.txt
思路:
1.是否是目录
是目录:
2.获取文件列表
3.遍历文件列表得到每个文件对象
4.递归调用删除方法,删除目录中的每一项内容
2.直接删除src,此时src要么是空目录,要么是文件。 */
public class DeleteFolder {
public static void main(String[] args) {
//创建要删除的多级目录
File file = new File("day10Home\\itcast"); //调用方法删除多级目录
deleteFolder(file); } private static void deleteFolder(File src) {
//1.是否是目录
if(src.isDirectory()){
//2.获取文件列表
File[] fileArray = src.listFiles(); //3.遍历文件列表得到每个文件对象
for(File file : fileArray){
//4.递归调用删除方法,删除目录中的每一项内容
deleteFolder(file);
}
}
//5.将src删除,此时src要么是空目录,要么是文件。
src.delete();
}
}

IO流案例:1.复制多级文件夹 2.删除多级文件夹的更多相关文章

  1. IO流(字节流复制)01

    package ioDemo; import java.io.*; /** * IO流(字节流复制) * Created by lcj on 2017/11/2. */ public class bu ...

  2. 应用程序启动后修改自身EXE文件或自删除EXE文件(附VC++6.0源码)

    在CSDN论坛看到这么一个问题:如何为第三方工具加上使用限制次数?问题的答案很简单,重新做一个应用程序,将第三方程序打包进这个应用程序,启动应用程序时可以检查第三方工具的使用次数,检查通过,可运行第三 ...

  3. linux批量压缩当前目录中文件后,删除原文件

    linux批量压缩当前目录中文件后,删除原文件 for i in `ls|awk -F " " '{print $NF}'`; do tar -zcvf $i.tar.gz $i ...

  4. Python之文件处理-递归删除特定文件

    Python之文件处理-递归删除特定文件 #!/usr/bin/env python # -*- coding:utf-8 -*- import os def delete_particular_fi ...

  5. Java基础知识强化之IO流笔记50:IO流练习之 复制多级文件夹的案例

    1. 复制多级文件夹的案例 需求:复制多级文件夹       数据源:E:\JavaSE\day21\code\demos     目的地:E:\   分析:         A:封装数据源File ...

  6. Java基础知识强化之IO流笔记48:IO流练习之 复制单级文件夹案例

    1. 复制单级文件夹     数据源:e:\\demo     目的地:e:\\test 分析: A:封装目录 B:获取该目录下的所有文本的File数组 C:遍历该File数组,得到每一个File对象 ...

  7. Java基础知识强化之IO流笔记49:IO流练习之 复制指定目录下指定后缀名的文件并修改名称的案例

    1. 复制指定目录下指定后缀名的文件并修改名称的案例     需求:复制指定目录下的指定文件,并修改后缀名.  • 指定的文件是:.java文件.     • 指定的后缀名是:.jad     • 指 ...

  8. Java(36)IO流案例与总结

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15228455.html 博客主页:https://www.cnblogs.com/testero ...

  9. IO流-递归遍历目录下指定后缀名结尾的文件名称

    /* *自定义遍历目录下指定后缀名结尾文件的名称的方法: * * param file:指定目录 name:指定后缀名 */ 1 public static void FileName(File fi ...

随机推荐

  1. 使用mysql导入数据时关掉binlog

    在my.cnf中注释掉 log-bin=bin-log参数然后重启数据库

  2. linux内核模块依赖图

    Module                  Size  Used by btrfs                 880032  0 raid6_pq               97812  ...

  3. 中断线程Interrupt()

    以下是参考<<Java多线程模式>>的 1. sleep() & interrupt() 线程A正在使用sleep()暂停着: Thread.sleep(100000) ...

  4. 常见mysql分布式数据中间件

    一般分为三种: 1. proxy sharding,目前由cobar,mycat,drds,atlas修改,这几个产品的起源一般是mysqlproxy 或 ameoba,特点是mysql协议基本兼容, ...

  5. javascript查找子节点时,html里的换行可能会被当成节点

    1.直接去HTML里找到该换行的地方去掉换行 2.写一个方法把元素类型为空格而且是文本都删除 function del_ff(elem){ var elem_child = elem.childNod ...

  6. POJ1511 Invitation Cards —— 最短路spfa

    题目链接:http://poj.org/problem?id=1511 Invitation Cards Time Limit: 8000MS   Memory Limit: 262144K Tota ...

  7. File.Copy的时候Could not find a part of the path

    https://developercommunity.visualstudio.com/content/problem/378265/filecopy-did-not-throw-the-correc ...

  8. ad广告下拉收起代码

    1. [代码][JavaScript]代码<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &qu ...

  9. web开发中的mysql使用

    一.单机mysql与mysql集群 1. 单机mysql很好理解,在一台物理机上安装好mysql服务端程序,使用这一台机器的硬件(cpu,内存,硬盘)进行数据的处理. 2.mysql集群 MySQL集 ...

  10. VM 下安装ghost版系统

    一.首先分区,并激活主分区 二.设置cd-rom的接口为IDE(这项看情况来设置,如果提示 "units specified don't exist, SHSUCDX can't insta ...