Java学习日记day07:IO总习题(File,FileStream,Write,Read)

IO

问题:实现目录的递归拷贝功能(包括目录下面的文件)

需求:

  • 用户只需提供当前目录以及目的目录即可开始拷贝
  • 拷贝文件需输出拷贝内容
下面是我所编写的代码
Copy.java文件
package com.jvstudy.day07.text1;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
 * Copy类:实现目录的递归拷贝功能
 */
public class Copy {
	/**
	 * @param path      当前目录
	 * @param disPath   目的目录
	 */
	public static void copy(String path,String disPath) {
		
		File dir = new File(path);
		File distPath = new File(disPath+dir.getName());	//合成目的目录并生成File对象
		distPath.mkdirs();
		File[] dirs = dir.listFiles();
		for(File dirOne:dirs) {
			if(dirOne.isDirectory()) {						//如果是目录则递归copy	
				copy(dirOne.getAbsolutePath(),distPath+"/");
			}
			else {											//创建空文件
				File fileDisPath = new File(distPath+"/"+dirOne.getName());
				try {
					fileDisPath.createNewFile();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				copyFile(dirOne,fileDisPath);
				
			}
		}
	}
	/**
	 * copeFile			复制文件
	 * @param file 		当前文件对象
	 * @param disFile	目标文件对象
	 */
	public static void copyFile(File file,File disFile) {
		
		FileInputStream fis = null;
		FileOutputStream fos = null;
		byte[] copytor = new byte[1024];					//缓存字节区
		try {
			int temp=0;
			fis = new FileInputStream(file);
			fos = new FileOutputStream(disFile,true);
			System.out.printf("Copying %s------------------------------------\n",file.getAbsolutePath());
			try {
				while((temp=fis.read(copytor)) != -1) {
					fos.write(copytor, 0, temp);
					System.out.print(new String(copytor,0,temp));
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				fis.close();								//关闭字节流
				fos.flush();
				fos.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.printf("Copying %s is over---------------------------\n",file.getAbsolutePath());
		}	
	}

}

测试
package com.jvstudy.day07.text1;

public class test1 {
/**
 * main
 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Copy.copy("D:\\Java Project\\Learning\\src\\com","E:/");
	}

}

效果图片(这里我拷贝的目录不是很大所有很快就完成了)

Java学习日记day07:IO总习题(File,FileStream,Write,Read)_第1张图片

你可能感兴趣的:(Java)