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

1. 复制多级文件夹的案例

需求:复制多级文件夹

 

数据源:E:\JavaSE\day21\code\demos

目的地:E:\

 

分析:

        A:封装数据源File

        B:封装目的地File

        C:判断该File是文件还是文件夹

       a:是文件夹

就在目的地目录下创建该文件夹

获取该File对象下的所有文件或者文件夹File对象

遍历得到每一个File对象

回到C

                    b:是文件

                            就复制(字节流)

 

2. 代码示例:

 1 package cn.itcast_05;
 2 import java.io.BufferedInputStream;
 3 import java.io.BufferedOutputStream;
 4 import java.io.File;
 5 import java.io.FileInputStream;
 6 import java.io.FileOutputStream;
 7 import java.io.IOException;
 8 /*
 9  * 需求:复制多极文件夹
10  *
11  * 数据源:E:\JavaSE\day21\code\demos
12  * 目的地:E:\13  *
14  * 分析:
15  *         A:封装数据源File
16  *         B:封装目的地File
17  *         C:判断该File是文件夹还是文件
18  *             a:是文件夹
19  *                 就在目的地目录下创建该文件夹
20  *                 获取该File对象下的所有文件或者文件夹File对象
21  *                 遍历得到每一个File对象
22  *                 回到C
23  *             b:是文件
24  *                 就复制(字节流)
25  */
26 public class CopyFoldersDemo {
27     public static void main(String[] args) throws IOException {
28         // 封装数据源File
29         File srcFile = new File("E:\\JavaSE\\day21\\code\\demos");
30         // 封装目的地File
31         File destFile = new File("E:\\");
32         // 复制文件夹的功能
33         copyFolder(srcFile, destFile);
34     }
35     private static void copyFolder(File srcFile, File destFile)
36             throws IOException {
37         // 判断该File是文件夹还是文件
38         if (srcFile.isDirectory()) {
39             // 文件夹
40             File newFolder = new File(destFile, srcFile.getName());
41             newFolder.mkdir();
42             // 获取该File对象下的所有文件或者文件夹File对象
43             File[] fileArray = srcFile.listFiles();
44             for (File file : fileArray) {
45                 copyFolder(file, newFolder);
46             }
47         } else {
48             // 文件
49             File newFile = new File(destFile, srcFile.getName());
50             copyFile(srcFile, newFile);
51         }
52     }
53     private static void copyFile(File srcFile, File newFile) throws IOException {
54         BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
55                 srcFile));
56         BufferedOutputStream bos = new BufferedOutputStream(
57                 new FileOutputStream(newFile));
58         byte[] bys = new byte[1024];
59         int len = 0;
60         while ((len = bis.read(bys)) != -1) {
61             bos.write(bys, 0, len);
62         }
63         bos.close();
64         bis.close();
65     }
66 }
时间: 2024-10-20 13:18:02

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

Java基础知识强化之集合框架笔记06:Collection集合存储自定义对象并遍历的案例

1.练习:用集合存储5个学生对象,并把学生对象进行遍历. 分析: (1)创建学生类(2)创建集合对象(3)创建学生对象(4)把学生添加到集合(5)把集合转成数组(6)遍历数组 2. 代码示例: Student.java如下: 1 package cn.itcast_02; 2 3 public class Student { 4 // 成员变量 5 private String name; 6 private int age; 7 8 // 构造方法 9 public Student() { 1

Java基础知识强化之集合框架笔记50:Map集合之Map集合的概述和特点

1. Map集合的概述: 1 public interface Map<K,V> 作为学生来说,是根据学号来区分不同的学生的,那么假设我现在已经知道了学生的学号,我要根据学号去获取学生姓名,请问怎么做呢?如果采用前面讲解过的集合,我们只能把学号和学生姓名作为一个对象的成员,然后存储整个对象,将来遍历的时候,判断,获取对应的名称.但是呢,如果我都能把学生姓名拿出来了,我还需要根据编号去找吗?针对我们目前的这种需求:仅仅知道学号,就想知道学生姓名的情况,Java就提供了一种新的集合 Map.通过查

Java基础知识强化之网络编程笔记13:TCP之TCP协议上传图片并给出反馈

1. TCP协议上传图片并给出反馈: (1)客户端: 1 package cn.itcast_13; 2 3 import java.io.BufferedInputStream; 4 import java.io.BufferedOutputStream; 5 import java.io.FileInputStream; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.net.Socket;

Java基础知识强化之网络编程笔记14:TCP之多个客户端上传到一个服务器的思考(多线程改进)

1. 多个客户端上传到一个服务器的思考 通过while循环可以改进一个服务器接收多个客户端. 但是这个是有问题的.如果是这种情况,假设我还有张三,李四,王五这三个人分别执行客户端  张三:好好学习.avi(100M) 256k  李四:天天向上.mp3(3M)   1M  王五:ILoveJava.txt(1k) 100M 这要等张三传完了,再去传李四…… 2. 使用多线程改进: (1)线程类UserThread: 1 package cn.itcast_15; 2 3 import java.

Java基础知识强化之网络编程笔记06:TCP之TCP协议发送数据 和 接收数据

1. TCP协议发送数据 和 接收数据 TCP协议接收数据:• 创建接收端的Socket对象• 监听客户端连接.返回一个对应的Socket对象• 获取输入流,读取数据显示在控制台• 释放资源 TCP协议发送数据: • 创建发送端的Socket对象• 这一步如果成功,就说明连接已经建立成功了.• 获取输出流,写数据• 释放资源 2. 代码实现: (1)发送端: 1 package cn.itcast_06; 2 3 import java.io.IOException; 4 import java

Java基础知识强化之集合框架笔记04:Collection集合的基本功能测试

1. Collection集合的基本功能测试: 1 package cn.itcast_01; 2 3 import java.util.ArrayList; 4 import java.util.Collection; 5 6 /* 7 * 集合的由来: 8 * 我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我们就必须把这多个对象进行存储. 9 * 而要想存储多个对象,就不能是一个基本的变量,而应该是一个容器类型的变量,在我们目前所学过的知识

Java基础知识强化之网络编程笔记22:Android网络通信之 Android常用OAuth登录(获取个人信息)

1. 获取百度个人信息(使用Gson解析): 2. 代码案例: (1)工程一览图,如下: (2)activity_main.xml: 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent

Java基础知识强化之网络编程笔记04:UDP之发送端的数据来自于键盘录入案例

1. 数据来自于键盘录入 键盘录入数据要自己控制录入结束. 2. 代码实现: (1)发送端: 1 package com.himi.updDemo1; 2 3 import java.io.IOException; 4 import java.net.DatagramPacket; 5 import java.net.DatagramSocket; 6 import java.net.InetAddress; 7 import java.util.Scanner; 8 9 /** 10 * 11

Java基础知识强化之集合框架笔记01:集合的由来与数组的区别

1. 集合的由来: 我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我们就必须把这多个对象进行存储.而要想存储多个对象,就不能是一个基本的变量,而应该是一个容器类型的变量,在我们目前所学过的知识里面,有哪些是容器类型的呢?数组和StringBuffer.但是呢?StringBuffer的结果是一个字符串,不一定满足我们的要求,所以我们只能选择数组,这就是对象数组.而对象数组又不能适应变化的需求,因为数组的长度是固定的,这个时候,为了适应变化的需求