使用IO流复制文件夹(包括子目录)

IO流用于处理设备上的数据(包括硬盘,内存,键盘录入)。

IO流可根据流向不同分为输入流和输出流,根据处理数据类型不同分为字节流和字符流。

字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。

字节流和字符流的区别:

a.读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。

b.处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。

结论:只要是处理纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。

使用IO流复制文件夹(包括子目录)思路和步骤: 对于文件夹的复制,分2种情况

(1)当我们对文件进行遍历的时候,如果目标文件夹下的文件是个标准文件的话,我们就可以直接去做复制的动作,

(2)当目标文件中,是带有文件夹的文件,那么这个时候就需要对文件夹进行递归,直到最后它是个标准文件后,我们在做复制动作

代码演示:

 1 package liu;
 2
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.FileNotFoundException;
 6 import java.io.FileOutputStream;
 7 import java.io.IOException;
 8
 9 public class CopyDirectory {
10     /**
11      * 复制文件的方法
12      * @param src:源文件
13      * @param dest:目标文件
14      */
15     public static void copyFile(File src,File dest) {
16         try {
17             //实例化文件输入流和文件输出流对象
18             FileInputStream fis = new FileInputStream(src);
19             FileOutputStream fos = new FileOutputStream(dest);
20             //定义接收源文件数组
21             byte[] buf = new byte[(int) src.length()];
22             //从源数据中读取数据
23             fis.read(buf);
24             //把数据写入到目标文件中
25             fos.write(buf);
26             //关闭流
27             fos.close();
28             fis.close();
29         } catch (FileNotFoundException e) {
30             // TODO Auto-generated catch block
31             e.printStackTrace();
32         } catch (IOException e) {
33             // TODO Auto-generated catch block
34             e.printStackTrace();
35         }
36     }
37     /**
38      * 复制目录的方法
39      * @param src
40      * @param dest
41      */
42     public static void copyDir(File src,File dest) {
43         dest.mkdir();
44         File[] files = src.listFiles();
45         for (File file : files) {
46             if(file.isFile()) {
47                 copyFile(file, new File(dest.getAbsolutePath()+File.separator+file.getName()));
48             }
49             if(file.isDirectory()) {
50                 copyDir(file, new File(dest.getAbsolutePath()+File.separator+file.getName()));
51             }
52         }
53     }
54     public static void main(String[] args) {
55         //创建文件对象和指定的文件相关联
56         File src = new File("D:\\HBuilder_7.5");
57         File dest = new File("E:\\"+src.getName());
58         //创建目录
59         dest.mkdir();
60         //找到源目录下所有文件
61         File[] fs = src.listFiles();
62         //遍历
63         for (File f : fs) {
64             //如果是文件调用复制文件的方法
65             if(f.isFile()) {
66                 copyFile(f, new File(dest.getAbsolutePath()+File.separator+f.getName()));
67             }
68             //如果是目录调用复制目录的方法
69             if(f.isDirectory()) {
70                 copyDir(f, new File(dest.getAbsolutePath()+File.separator+f.getName()));
71             }
72         }
73     }
74 }

原文地址:https://www.cnblogs.com/cs2024/p/10017797.html

时间: 2024-08-09 11:57:53

使用IO流复制文件夹(包括子目录)的相关文章

java-通过IO流复制文件夹到指定目录

public class copyDirectoryDemo { public static void main(String[] args) {        File srcFolder = new File("C:\\Users\\MA\\Desktop\\IOtest");        File destFolder = new File("C:\\Users\\MA\\Desktop\\IOtest\\test");        fun(srcFold

使用IO流对文件夹的复制(文件夹中带有子目录)

当我们要复制带有子目录的文件夹的时候,就必须使用递归,这样才能把全部的文件夹都复制到位 思路和步骤: 对于文件夹的复制,分2种情况               (1)当我们对文件进行遍历的时候,如果目标文件夹下的文件是个标准文件的话,我们就可以直接去做复制的动作,               (2)当目标文件中,是带有文件夹的文件,那么这个时候就需要对文件夹进行递归,直到最后它是个标准文件后,我们在做复制动作 有了上述的2种情况后,那么这个需求,需要提供2种方法,1是对标准文件的复制,2是对带有

IO流 复制文件及文件夹

1 package io; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.io.OutputStream; 9 import java.util.Scanner; 10 11 public class copy

IO流 - 复制文件(字节缓冲流+字节流)

一.什么是缓冲流 缓冲流的内部都包含一个缓冲区,通过缓冲区读写,可以提高了IO流的读写速度. 二.缓冲流+字节流复制文件 //明确数据源 FileInputStream fis=new FileInputStream("D:\\java1018\\buffer.txt"); //明确目的地 FileOutputStream fos=new FileOutputStream("D:\\java1018\\a\\buffer2.txt"); //创建缓冲流对象 //输入

java io流 对文件夹的操作

检查文件夹是否存在 显示文件夹下面的文件 ....更多方法参考 http://www.cnblogs.com/phpyangbo/p/5965781.html ,与文件操作方法通用,因为都是一个类 //对文件夹的操作 //检查文件夹是否存在 //显示文件夹下面的文件 //.... import java.io.*; import java.util.*; public class Index{ public static void main(String[] args) throws Excep

IO流复制文件

1. 经过测试可以复制 txt excel csv exe pdf文件其他格式的没测,估计也没问题 public class Hello { private static final String LINE_SEPARATOR = System.getProperty("line.separator");//换行 public static void main(String[] args) throws Exception { FileInputStream reader = new

java用字符io流复制文件

一.小文件一次快速读写 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class Test11 { public static void main(String[] args) throws IOException { //关联

Java IO流 之 文件夹工具封装 FileUtil

http://www.verejava.com/?id=17160035681948 public class Test2 { public static void main(String[] args) { FileUtil.createDir("dir3"); FileUtil.createDirs("dir4/test"); FileUtil.renameDir("dir4/test", "dir4/newtest");

IO流 - 复制文件(字符流)

一.单字符复制 //明确数据源 FileReader fr=new FileReader("D:\\java1018\\buffer.txt"); //明确目的地 FileWriter fw=new FileWriter("D:\\java1018\\b\\buffer.txt"); //创建字符缓冲流对象 BufferedReader br=new BufferedReader(fr); BufferedWriter bw=new BufferedWriter(f