以下是我写的copy文件夹的练习:
import java.io.*;
import java.util.*;
import java.io.*;
public class IO{
public static void main(String[] args) throws IOException{
CopyDirectory.copy("C:\\JAVA_shine","E:");
}
}
class CopyDirectory{
public static void copy(String sour, String tar) throws IOException{
String[] tempstrs = sour.split("\\\\");
String newsour = "\\"+sour;
if(tempstrs[0].equals("C:")||tempstrs[0].equals("D:")||tempstrs[0].equals("E:")||tempstrs[0].equals
("F:")){
newsour = sour;
tempstrs = Arrays.copyOfRange(tempstrs, 1, tempstrs.length);
StringBuilder strb = new StringBuilder();
for(String s : tempstrs){
strb.append("\\");
strb.append(s);
}
newsour = new String(strb);
}
File file = new File(sour);
if(file.isDirectory()){
System.out.println("这是一个目录:"+sour);
File newfile = new File(tar+newsour);
System.out.println(newfile.mkdirs());
String[] strs = file.list();
for(String str : strs){
copy(sour+"\\"+str,tar);
}
}
else{
System.out.println(sour+"-----------"+tar+newsour);
CopyFile.copy(sour,tar+newsour);
}
}
}
class CopyFile{
public static void copy(String sour, String tar) throws IOException{
byte[] bytes = new byte[1024*1024];
FileInputStream filein = new FileInputStream(sour);
FileOutputStream fileout = new FileOutputStream(tar);
while(filein.read(bytes)!=-1){
bytes = Arrays.copyOf(bytes,(int)(bytes.length*1.5));
}
int i = bytes.length-1;
for(; i>=0; i--){
if(bytes[i] != 0)
break;
}
if(i == -1)
i = 0;
bytes = Arrays.copyOf(bytes, i);
fileout.write(bytes);
filein.close();
fileout.close();
}
}