IO流案例:1.复制多级文件夹 2.删除多级文件夹
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.删除多级文件夹的更多相关文章
- IO流(字节流复制)01
package ioDemo; import java.io.*; /** * IO流(字节流复制) * Created by lcj on 2017/11/2. */ public class bu ...
- 应用程序启动后修改自身EXE文件或自删除EXE文件(附VC++6.0源码)
在CSDN论坛看到这么一个问题:如何为第三方工具加上使用限制次数?问题的答案很简单,重新做一个应用程序,将第三方程序打包进这个应用程序,启动应用程序时可以检查第三方工具的使用次数,检查通过,可运行第三 ...
- linux批量压缩当前目录中文件后,删除原文件
linux批量压缩当前目录中文件后,删除原文件 for i in `ls|awk -F " " '{print $NF}'`; do tar -zcvf $i.tar.gz $i ...
- Python之文件处理-递归删除特定文件
Python之文件处理-递归删除特定文件 #!/usr/bin/env python # -*- coding:utf-8 -*- import os def delete_particular_fi ...
- Java基础知识强化之IO流笔记50:IO流练习之 复制多级文件夹的案例
1. 复制多级文件夹的案例 需求:复制多级文件夹 数据源:E:\JavaSE\day21\code\demos 目的地:E:\ 分析: A:封装数据源File ...
- Java基础知识强化之IO流笔记48:IO流练习之 复制单级文件夹案例
1. 复制单级文件夹 数据源:e:\\demo 目的地:e:\\test 分析: A:封装目录 B:获取该目录下的所有文本的File数组 C:遍历该File数组,得到每一个File对象 ...
- Java基础知识强化之IO流笔记49:IO流练习之 复制指定目录下指定后缀名的文件并修改名称的案例
1. 复制指定目录下指定后缀名的文件并修改名称的案例 需求:复制指定目录下的指定文件,并修改后缀名. • 指定的文件是:.java文件. • 指定的后缀名是:.jad • 指 ...
- Java(36)IO流案例与总结
作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15228455.html 博客主页:https://www.cnblogs.com/testero ...
- IO流-递归遍历目录下指定后缀名结尾的文件名称
/* *自定义遍历目录下指定后缀名结尾文件的名称的方法: * * param file:指定目录 name:指定后缀名 */ 1 public static void FileName(File fi ...
随机推荐
- JavaScript 的 MVP 框架 Riot.js
Riot.js 详细介绍 Riot.js是一个客户端模型-视图-呈现(MVP)框架并且它非常轻量级甚至小于1kb.尽管他的大小令人难以置信,所有它能构建的有如下:一个模板引擎,路由,甚至是库和一个严格 ...
- 浅谈C#中常见的委托
一提到委托,浮现在我们脑海中的大概是听的最多的就是类似C++的函数指针吧,呵呵,至少我的第一个反应是这样的. 关于委托的定义和使用,已经有诸多的人讲解过,并且讲解细致入微,尤其是张子阳的那一篇.我就不 ...
- python day- 10 动态参数 函数的嵌套 命名空间和作用域 global和nolocal
一.动态参数: 动态参数是形参的一类 分为:动态位置参数(* + 函数名)表示 调用后返回的是元祖 动态关键字参数(** + 函数名)表示 形参的排列顺序: 位置参数 > 动态位置参 ...
- SpringInAction4笔记——web
1,java配置 extends AbstractAnnotationConfigDispatcherServletInitializer public class SpitterWebInitial ...
- JUNO eclipse Version: 4.2.0 添加svn插件
1.下载最新的这个版本的SVN http://www.eclipse.org/subversive/latest-releases.php 实际的下载地址 http://www.eclipse.org ...
- HDU3081 Marriage Match II —— 传递闭包 + 二分图最大匹配 or 传递闭包 + 二分 + 最大流
题目链接:https://vjudge.net/problem/HDU-3081 Marriage Match II Time Limit: 2000/1000 MS (Java/Others) ...
- codevs矩阵乘法系列
T1:矩阵乘法板子题,练手. #include <map> #include <set> #include <cmath> #include <ctime&g ...
- Digit(湘潭大学比赛)
题目链接: 点击打开链接 中文问题目就不解释了. 思路,找到这个数对应的的数字是多少,然后对这个数取对应的位置. 步骤:先打表打出一位数字对应字符串的长度,两位数的,到8,9就差不多了. 先确定给定的 ...
- 洛谷 P1578 奶牛浴场 —— 最大子矩形
题目:https://www.luogu.org/problemnew/show/P1578 枚举左边界,向右枚举右边界,同时不断限制上下边界,最后右边界是整个图的边界: 由于没有做左边界是整个图的边 ...
- linux部署web项目到tomcat下(图文详解)
大家好,相信不少初学者不知道如何将windows eclipse下开发的web项目部署到linux系统的tomcat下,今天我将图文并茂教大家 首先呢,比如我新建一个web项目,打开eclipse编辑 ...