代码如下,未考虑空文件夹。
public void test6(File file) throws IOException {
File[] files = file.listFiles();
for(File file1:files){
if (file1.isDirectory()){
test6(file1);
}else{
FileInputStream fis = new FileInputStream(file1);
byte[] b=new byte[1024];
String absolutePath = file1.getParent();
int i = absolutePath.indexOf("testa");
String relativePath = absolutePath.substring(i,absolutePath.length());
File file2 = new File("D:\\testb"+ "\\"+relativePath);
if (!file2.exists()){
file2.mkdirs();
}
FileOutputStream fos = new FileOutputStream(file2+"\\"+file1.getName());
while(fis.read(b)!=-1){
fos.write(b);
}
fos.close();
fis.close();
}
}
}
@Test
public void test7() throws IOException {
File file = new File("D:\\testa");
test6(file);
}
testa的第一级目录如下。
第二级目录。
第三级目录。
执行以上代码后的testb。
等等。