java,php,asp.net,linux,javascript,mysql,mssql,oracle,编程

文件拷贝

转载请注明:http://www.pmjava.com/Article/ShowInfo.asp?ID=56586
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class FileCopy {
private String message = "";
public String getMessage() {
 
return message;
}
public void setMessage(String message) {
 
this.message = message;
}
/**
  * 将源文件拷贝到目标文件
  *
  *
@param src
  *            写源文件地址,需文件名
  *
@param des
  *            写目标文件地址,无需文件名
 
*/
public boolean copyFile(String src, String des) {
  File srcFile
= new File(src);
  File desDir
= new File(des);
  File desFile
= new File(des + "/" + srcFile.getName());
 
// 判断源文件是否存在
  if (!srcFile.exists()) {
  
this.setMessage("源文件不存在!");
  
return false;
  }
else if (!srcFile.isFile()) {
  
this.setMessage("源文件格式错!");
  
return false;
  }
 
// 判断源文件是否存在
  if (!desDir.exists()) {
  
this.setMessage("目标目录不存在!");
  
return false;
  }
else if (!desDir.isDirectory()) {
  
this.setMessage("不是有效的目录!");
  
return false;
  }
  BufferedReader reader
= null;
  BufferedWriter writer
= null;
  String str;
 
try {
   reader
= new BufferedReader(new FileReader(srcFile));
   writer
= new BufferedWriter(new FileWriter(desFile));
  
// 判断目标文件是否存在及其格式,不存在就创建,格式不对先删除,存在就替代
   if (!desFile.exists() || !desFile.isFile()) {
   
if (desFile.exists()) {
     desFile.delete();
    }
    desFile.createNewFile();
   }
  
// 从源文件读取数据,并写入目标文件
   str = reader.readLine();
  
while (str != null) {
    writer.write(str);
    writer.newLine();
    str
= reader.readLine();
   }
  }
catch (IOException e) {
  
this.setMessage(e.getMessage());
  
return false;
  }
finally {
  
if (reader != null) {
   
try {
     reader.close();
    }
catch (IOException e) {
    
this.setMessage(e.getMessage());
    }
   }
  
if (writer != null) {
   
try {
     writer.close();
    }
catch (IOException e) {
    
this.setMessage(e.getMessage());
    }
   }
  }
 
return true;
}
private List fileList = new ArrayList();

/**
  * 列出所有文件
  *
@param srcFile
 
*/
private void file(File srcFile) {
 
if (srcFile.isDirectory()) {
   String[] files
= srcFile.list();
  
  
for (int i = 0; i < files.length; i++) {
    File f
= new File(srcFile + "/" + files[i]);
   
// 如果是文件加入列表,否则递归列出
    if (f.isFile()) {
     fileList.add(f);
    }
else
     file(f);
   }
  }
else this.setMessage(srcFile.getAbsolutePath()+"不是目录");
}
/**
  * 建立目录
  *
@param des
  *
@throws IOException
 
*/private void mkdir(File des) {
 
if (!des.exists() || !des.isDirectory()) {
   mkdir(des.getParentFile());
  
if (des.exists()) {
    des.delete();
   }
   des.mkdir();
  }
}
/**
  * 复制目录  将源目录下所有文件拷贝到目标目录下
  *
@param src  源目录
   *
@param des  目标目录
 
*/
public boolean copyDir(String src, String des) {
  File srcFile
= new File(src);
 
if (!srcFile.exists()) {
  
this.setMessage("源目录不存在!");
  
return false;
  }
else if (!srcFile.isDirectory()) {
  
this.setMessage(src+"不是有效的目录!");
  
return false;
  }
  file(srcFile);
  
 
for (int i = 0; i < fileList.size(); i++) {
   String srcName
= ((File) fileList.get(i)).getPath();
   String desName
= srcName.substring(src.length(), srcName.length());
   desName
= des + desName;
   File dir
=new File(desName).getParentFile();
   mkdir(dir);
  
  
if(!copyFile(srcName, dir.getPath())){
   
return false;
   }
  }
 
return true;
}
public static void main(String[] args) {

  FileCopy t
= new FileCopy();
  System.out.println(t.copyFile(
"D:/aaa.txt","E:"));
  String src
="D:/asdf";
  String des
="E:/adf";
  System.out.println(t.copyDir(src, des));
  System.out.println(t.getMessage());
}

}

posted on 2009-06-10 21:27 rrong_m 阅读(121) 评论(0)  编辑  收藏

<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

导航

统计

常用链接

随笔档案

文章分类

文章档案

java编程

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜