1.demo效果
实现单级文件夹的复制,单级文件夹就是文件夹里面只有文件,没有文件
把D:\A_安卓心得\java后端\waitForCopy 下面的waitForCopy文件夹复制到C:\Users\Administrator\IdeaProjects\Day07下面
实现步骤:
1.创建源文件file对象 使用构造方法
2.获得一下源文件file对象 的文件名 使用getName()
3.创建要复制文件的file对象 判断这个文件名是否存在,不存在就创建
使用exist() mkdir()
4.获得源文件目录下面的所有文件的file数组
5.遍历数组 数组的元素就是要被复制的文件
6.开始复制文件
2.注意点和方法
(1) 思想就是我们在构造File 对象的时候要把文件和文件前面的文件夹目录分开
(2)File创建对象的三个构造方法
File(String pathname); // 参数是一个路径字符串
File(String parent , String child ) // 从父路径名和子路径名字符串创建新的File实例
File(File parent , String child ) // 从父路径名和子路径名字符串创建新的File实例
后两个相当与是吧后面的两个参数拼接起来形成一个File对象,就是可以把文件和文件前面的文件夹目录分开
(3)因为文件里面不一定都是字符文件 所以要用字节流
字节缓冲流的讲解 字节缓冲流的底层还是字节流,字节缓冲流构造方法的参数是字节流对象InputStream,OutputStream
3.代码展示
public static void main(String[] args) throws IOException {
File res_dir = new File("D:\\A_安卓心得\\java后端\\waitForCopy");
// System.out.println(file.exists());
//我要复制文件就要得到源文件夹的名子以及文件里面文件的名字
String res_dirName = res_dir.getName();
System.out.println(res_dirName);
//创建要复制文件的file对象 判断这个文件名是否存在,不存在就创建
File des_dir = new File("C:\\Users\\Administrator\\IdeaProjects\\Day07",res_dirName);
/*
//注意File的构造方法有三个
File(String pathname); // 参数是一个路径字符串
File(String parent , String child ) // 从父路径名和子路径名字符串创建新的File实例
File(File parent , String child ) // 从父路径名和子路径名字符串创建新的File实例
后两个相当与是吧后面的两个参数拼接起来形成一个File对象
*/
if (!des_dir.exists()){
//创建文件夹
des_dir.mkdir();
}
//4.获得源文件目录下面的所有文件的file数组
File file1[] = res_dir.listFiles();
//5遍历数组 数组的元素就是要被复制的文件
for (File file2 : file1){
//得到源文件夹下面的文件名
String res_Filename = file2.getName();
//开始创建源文件的路径
File res_file = new File(res_dir,res_Filename); //源文件夹名 + 源文件名
File des_file = new File(des_dir,res_Filename);
//使用字节缓冲流一次复制一个字节数组
//输入流
FileInputStream fis = new FileInputStream(res_file);
BufferedInputStream bis = new BufferedInputStream(fis);
//输出流
FileOutputStream fos = new FileOutputStream(des_file);
BufferedOutputStream bos = new BufferedOutputStream(fos);
//创建数组一次读一个字节数组
int len;
byte by[] = new byte[1024];
while ((len = bis.read(by)) != -1){
//开始写
bos.write(by,0,len);
}
//释放资源
bis.close();
bos.close();
}
}