java-IO流练习

1.从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;

public class DirCopyDemo {

	public static void main(String[] args) throws IOException {
		Scanner s = new Scanner(System.in);
		System.out.println("输入源目录路径");
		String s1 = s.nextLine();
		System.out.println("输入目的目录路径");
		String s2 = s.nextLine();
		File from = new File(s1);
		File to = new File(s2);
		if(!to.exists()){
			to.mkdirs();
		}
		CopyDir(from, to);
	}

	private static void CopyDir(File from, File to) throws IOException {
		FileInputStream fis = null;
		FileOutputStream fos = null;
		File[] froms = from.listFiles();
		int len=0;
		byte[] wj = new byte[1024];
		for (File f : froms) {
			if (f.isDirectory()) {
				// 如果是文件夹,需要在to中创建一个名称相同的文件夹,
				// 然后再递归到该文件夹里面,复制相应的文件
				// 对于创建的文件夹名称,需要获取到目的to绝对路径,然后加上f的名称
				File newfile = new File(to.getAbsolutePath() + "\"
						+ f.getName());
				newfile.mkdirs();
				// 此处就需要进入新建的文件夹内部进行递归
				// 这样才能复制该文件夹内的文件
				CopyDir(f, newfile);
			} else {
				// 在输出目的to的文件名称 需要先获取到f的文件名称 然后加上file2的绝对路径
				 //这样就能创建一个名称相同的文件  
				fis = new FileInputStream(f);
				fos= new FileOutputStream(to.getAbsolutePath()+"\"+f.getName());
				while ((len = fis.read(wj)) != -1) {
					fos.write(wj, 0, len);
					fos.flush();
				}
				fis.close();  
	            fos.close();  
			}
		}
	}

}
原文地址:https://www.cnblogs.com/czy16/p/8322140.html