`
h2626819
  • 浏览: 45307 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

常用的java函数(十一)文件拷贝代码

阅读更多
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()); 
} 

}

分享到:
评论
1 楼 casheen 2008-12-16  
import java.io.File;

import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Copy;

public class FileUtils {

	public static void copyToFile(String srcFile, String destFile) {
		Project project = new Project();
		Copy copy = new Copy();
		copy.setProject(project);
		copy.setFile(new File(srcFile));
		copy.setTofile(new File(destFile));
		copy.execute();
	}

	public static void copyToDir(String srcFile, String destDir) {
		Project project = new Project();
		Copy copy = new Copy();
		copy.setProject(project);
		copy.setFile(new File(srcFile));
		copy.setTodir(new File(destDir));
		copy.execute();
	}

	public static void main(String[] args) {
		copyToFile("c:/aaa.txt", "d:\\b.txt");
		copyToDir("c:/aaa.txt", "d:\\dir");
	}

}

相关推荐

    JAVA上百实例源码以及开源项目源代码

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道VB...

    java源码包---java 源码 大量 实例

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道VB...

    JAVA上百实例源码以及开源项目

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道VB...

    java源码包2

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道...

    java源码包4

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道...

    java源码包3

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Y坐标、得到X坐标,Y坐标值、绘制火焰效果Image…… Java加密解密工具集 JCT v1.0源码包 5个目标文件 内容索引:JAVA源码,综合应用,JCT,加密解密 WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Y坐标、得到X坐标,Y坐标值、绘制火焰效果Image…… Java加密解密工具集 JCT v1.0源码包 5个目标文件 内容索引:JAVA源码,综合应用,JCT,加密解密 WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。...

    JAVA基于局域网的聊天室系统(源代码+论文).zip

    JAVA基于局域网的聊天室系统(源代码+论文) 摘 要 视频聊天系统作为一种新型的通信和交流工具,突破了地域的限制,可以提供更为便捷、灵活、全面的音、视频信息的传递和服务,具有极其广泛的发展前景。 本文介绍了...

    JNI技术手册 c/c++调用java

    3) 在C工程Cpro下建立hello.def文件(用于定义导出的函数),内容为: 40 4) 在C工程Cpro下建立makefile文件,内容为: 40 5) Make Targets 40 6) Make Targets视图下双击step1,在C工程Cpro下生成hello.o 文件。 41...

    java核心面试技术点

    每条线程都有自己的工作内存(Working Memory),工作内存中保存的是主存中某些对象成员变量的拷贝,线程对所有对象成员变量的操作都是在工作内存中进行,线程之间无法相互直接访问,变量传递均需要通过主存完成。...

    java 算法

    用半角的特殊符号代替全角的特殊符号,数组和数组之间的转换代码,从资源文件里读取值的类,一个随机类,计算传入值是否星期六,为RootPaneContainer组件添加键盘事件,将数组转成字符串 在调试或记录日志时用到,...

    Java语言基础下载

    常用函数 297 数据类型转换函数CAST和CONVERT 298 分组查询 299 五大约束 301 索引 303 数据库的备份与恢复 304 内容总结 308 独立实践 309 第十八章:数据库(三) 310 学习目标: 310 存储过程 311 触发器 313 ...

    java核心面试

    每条线程都有自己的工作内存(Working Memory),工作内存中保存的是主存中某些对象成员变量的拷贝,线程对所有对象成员变量的操作都是在工作内存中进行,线程之间无法相互直接访问,变量传递均需要通过主存完成。...

    Java2核心技术.part5

    Java2核心技术第I卷.基础知识 目录: 译者序 前言 第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝...

    如何实现MPEG音频文件的解码

     设置相关的编译器编译选项,下面是在VC++6.0中的设置(下面的设置是在SDK中的DLL和LIB文件都拷贝到当前的工程文件的Debug和Release目录下时):  Debug版本的设置如下:   Release版本的设置如下: 第三步:...

Global site tag (gtag.js) - Google Analytics