import org.junit.Test;
import java.io.*;
public class CopyTest {
@Test
public void test1(){
dir("xxx","xxx"); //輸入原檔案的路徑和目标路徑
//copy(file);
}
private void dir(String src,String des) {
File file = new File(src); //擷取源目錄檔案
File[] files = file.listFiles(); //展開到數組
if(files == null){
return;
}
if(!(new File(des).exists()))
new File(des).mkdirs(); //對于已經确定是目錄的外部des先建立目錄
for (int i = 0; i < files.length; i++) { //對des内部的檔案周遊
if (files[i].isFile()) { //判斷是檔案還是目錄
copy(files[i].getPath(),des+File.separator+files[i].getName());//檔案的目前路徑作為源路徑,目标路徑即檔案名
} else if (files[i].isDirectory()){
dir(files[i].getPath(),des+File.separator+files[i].getName()); // 子目錄必須也得重新統計, 遞歸調用,目标路徑加上檔案名稱作為下次疊代的新路徑
}
}
}
public void copy(String src,String des){
FileInputStream fio =null;
//BufferedInputStream bio = null;
FileOutputStream foo = null;
//BufferedOutputStream boo = null;
try {
fio =new FileInputStream(src);
// bio = new BufferedInputStream(fio);
foo = new FileOutputStream(des);
// boo = new BufferedOutputStream(foo);
byte[] ch = new byte[8192];
int n;
while((n=fio.read(ch))!=-1){
foo.write(ch,0,n);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
if(fio!=null){
try {
fio.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(foo!=null){
try {
foo.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}