1、文件递归拷贝
import java.io.*;public class Test {//文件目录递归拷贝public static void main(String[] args) throws Exception {String sourceFileDir = "D:\\MusicProject\\Version2.0\\music-project - 副本";String targetFileDir = "D:\\MusicProject\\Version2.0\\IO流";copy(sourceFileDir, targetFileDir);}public static void copy(String sourceFileDir, String targetFileDir) throws Exception {//创建File类抽象对象:文件和目录路径名的抽象表示形式。File fileSource = new File(sourceFileDir);//获取当前目录下面的子目录及文件File[] files = fileSource.listFiles();for (File f : files) {//获取文件名及属性System.out.println(f.getName());if (f.isFile()) {//创建文件输入流FileInputStream in = new FileInputStream(f);//创建文件输出流,对应文件名FileOutputStream out = new FileOutputStream(targetFileDir + "\\" + f.getName());//创建byte数值,用来储存读取的部分文件byte[] bytes = new byte[1024];//一次读取一kbint readLength;//读取文件,并返回读取的长度,为-1表示文件读取结束while ((readLength = in.read(bytes)) != -1) {//System.out.println(readLength);// System.out.println("............")//通过输出流写入当前文件,write(byte[] b, int off, int len) 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。out.write(bytes, 0, readLength);}//关闭输入流in.close();//刷新输出流,清空管道out.flush();//关闭输出流out.close();} else if (f.isDirectory()) {//创建目录new File(targetFileDir + "\\" + f.getName()).mkdir();//递归copy(sourceFileDir + "\\" + f.getName(),targetFileDir + "\\" + f.getName());}}}}
