复制文件夹
问题1:使用字节流还是字符流
使用字节流 可能有图片、视频、音频…等二进制文件
问题2:如何提高复制速度
BufferedInputStream和BufferedOutputStream
byte [] buf = new byte[1024];
问题3:涉及的技能点
1.IO流 :文件的复制
2.递归:各级文件夹和文件的递归复制
3.File类:文件夹的定义和创建
问题4:问题的迭代
1.复制一个文件
2.复制一个文件夹下所有的文件(不包括子文件夹)
3.复制一个文件夹下所有的文件和子文件夹,从而完成文件夹的复制
public class TestCopyDir{
public static void main(String[] args){
copyDir("g:/sxt","g:/sxt2");
}
public static void copyFile(String sourceName,String destName){
BufferedInputStream bis=null;
BufferedOutputStream bos=null;
try{
InputStream fis=new FileInputStream(sourceName);
OutputStream fos=new FileOutputStream(destName);
bis=new BufferedInputStream(fis);
bos=new BufferedOutputStream(fos);
byte[] buf=new byte[1024];
int len=bis.read(buf);
whlie(len!=-1){
bos.write(buf,0,len);
len=bis.read(buf);
}
catch(IOException e){
e.printStackTrace();
}
try{
if(bis!=null)
bis.close();
}catch(IOException e){
e.printStackTrace();
}
try{
if(bos!=null)
bos.close();
}catch(IOException e){
e.printStackTrace();
}
}
public static void copyDir(String sourceDirName,String destDirName){
File sourceDir=new File(sourceDirName);
if(!sourceDir.exists()){
System.err.println("源文件夹必须存在!");
return;
}
File destDir=new File(destDirName);
if(!destDir.exists()){
destDir.makeDirs();
}
File[] files=sourceDir.listFiles();
for(File file:files){
if(file.isFile()){
copyFile(sourceDirName+"/"+file.getName(),destDirName+"/"+file.getName());
}
if(file.isDirectory()){
copyDir(sourceDirName+"/"+file.getName(),destDirName+"/"+file.getName());
}
}
}
}