- /*
- * 复制一个文件夹
- 首先将数据源 c:\\demo,数据目的 d: 封装成File对象
- 从源中获取文件夹的名字,将目的和文件夹的名组成新的File对象,创建目的文件夹
- 获取数据源的中的全部文件 文件的数组File[]
- 遍历数组,获取到的是数据源中的文件的全路径
- 获取文件名,将文件名和你的数据目的文件夹组成新的File对象
- 源有了,目的有了,字节流读写文件
-
- 案例,IO,File类的配合使用
- 流读写重要,File类的方法很重要
- */
- import java.io.*;
- public class CopyDir {
- public static void main(String[] args) {
- copyDir(new File("D:\\迅雷下载"), new File("E:\\"));
- }
- //定义方法,实现目录的复制,定义两个参数,数据源,复制的目的
- private static void copyDir(File source,File target){
- //获取数据源的文件夹的名字
- String name = source.getName();
- //目的有了吧,+ 文件夹名,创建一个同名的目录
- //目的盘,和文件夹名组成File对象
- File newDir = new File(target,name);
- newDir.mkdirs();//newDir d:\\demo
- //遍历数据源目录下的全部文件
- File[] file = source.listFiles();
- for(File f : file){
- //获取遍历到的目录的文件名
- String filename = f.getName();
- //newDir+filename d:\\demo\\新建 WinRAR ZIP 压缩文件.zip
- //组成新的目录和文件名
- File newFile = new File(newDir,filename);//复制的文件的目的
- //数据源,数组f , 目的就是newFile , 字节流读写文件
- copyFile(f,newFile);
- }
- }
- //定义方法,实现字节流的读写文件,传递数据源和数据目的
- private static void copyFile(File source , File target){
- //创建字节流对象
- FileInputStream fis = null;
- FileOutputStream fos = null;
- try{
- fis = new FileInputStream(source);
- fos = new FileOutputStream(target);
- byte[] bytes = new byte[1024];
- int len = 0;
- while((len = fis.read(bytes))!=-1){
- fos.write(bytes, 0, len);
- }
- }catch(IOException e){
- e.printStackTrace();
- throw new RuntimeException("复制失败");
- }finally{
- try{
- if(fos!=null)
- fos.close();
- }catch(IOException e){
- throw new RuntimeException("文件写入关闭失败");
- }finally{
- try{
- if(fis!=null)
- fis.close();
- }catch(IOException e){
- throw new RuntimeException("文件读取关闭失败");
- }
- }
- }
- }
- }
复制代码
|
|