`
h2626819
  • 浏览: 46093 次
  • 性别: 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 递归拷贝文件显示进度demo

    文件拷贝通常涉及到`java.nio`包中的`Files`类。`copy()`方法可以从源路径复制到目标路径,确保数据的完整性和安全性。在本示例中,每个文件都会被逐个拷贝,并更新进度。 4. **进度显示**: 进度显示的关键在于...

    Java文件的复制源代码

    在标题和描述中提到的"Java文件复制源代码",主要是指如何使用Java语言来实现文件的拷贝操作。这里我们将深入探讨如何通过Java标准库API来完成文件的复制,并且特别关注使用Swing组件的情况。 首先,我们从最基础的...

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

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

    文件拷贝,复制文件,小例题

    在IT领域,文件拷贝和复制是日常工作中非常基础但重要的操作。无论是开发人员在调试代码,还是普通用户在管理个人文件,都需要频繁地进行文件的移动和复制。本小例题将深入探讨这一主题,旨在帮助你更好地理解和实现...

    NDK13_C++基础:构造函数、拷贝构造函数、浅拷贝与深拷贝.zip

    在java中执行这个语句,只是开辟了一块内存空间,并没初始化和赋值对象, 必须用new关键字,来进行初始化和赋值 ———————————————— 版权声明:本文为CSDN博主「鱼包子Ray」的原创文章,遵循 CC ...

    实例83_文件操作_拷贝文件.rar_实例文件操

    总之,“实例83_文件操作_拷贝文件”这个主题涵盖了不同操作系统和编程语言中文件拷贝的基本方法,以及在实际应用中可能遇到的各种扩展问题。掌握这些知识对于任何IT从业者来说都是基础且必要的。通过深入理解和实践...

    java源码包3

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

    java源码包2

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

    java 文件夹复制拷贝

    记住,始终确保在操作文件时有足够的权限,并且在可能的情况下使用异常处理来增加代码的健壮性。`FileCopy.java`文件应该包含了上述逻辑,通过编译和运行此文件,你就能完成文件夹的复制与删除操作。

    按要求拷贝文件的程序

    3. **拷贝文件**:如果满足拷贝条件,使用`shutil.copy2()`函数将文件从源位置复制到目标位置,`shutil.copy2()`函数可以保留文件的元数据,如修改时间、访问时间等。 4. **处理子目录**:如果需要递归拷贝整个目录...

    回调进度条拷贝文件

    例如,每当文件拷贝完成一部分,就会触发回调函数,该函数负责更新进度条的显示。 在实现带进度条的拷贝文件功能时,开发者可能使用了多线程或者异步编程技术。这样,文件拷贝操作可以在后台线程中进行,而主线程则...

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

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

    java源码包4

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

    JAVA网络抓包程序源代码

    JNI允许Java代码直接调用操作系统级别的函数,从而实现对网络接口的访问。 3. **libpcap库**:这是一个跨平台的库,用于捕获和分析网络数据包。通过JNI调用libpcap,可以获取到网络接口上的原始数据包。 4. **Java...

    java使用nio2拷贝文件的示例

    总结起来,Java NIO2提供的文件拷贝功能强大且灵活,通过`FileVisitor`和`Files.copy()`方法,可以实现高效的文件和目录拷贝,同时支持多种自定义策略,如错误处理、文件覆盖、路径保留等。这个示例展示了如何利用...

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

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

    拷贝指定目录下的指定文件类型的文件到指定目录

    标题“拷贝指定目录下的指定文件类型的文件到指定目录”涉及到的是文件操作和批处理脚本编程的知识。在IT行业中,我们经常需要批量处理文件,例如复制、移动或重命名大量文件,尤其当这些文件满足特定条件(如类型、...

    同一目录下,文件的拷贝

    标题提到的是“同一目录下,文件的拷贝”,描述中具体阐述了如何将一个名为"a"的文件在同一个目录下复制并重命名为"b"。这个过程涉及到的操作是文件复制和重命名,这是操作系统和编程语言中的基本功能。下面我们将...

    java 文件操作类

    4. **文件拷贝和复制**: - **`Files`类**:Java 7引入的新工具,提供静态方法如`copy(Path source, Path target, CopyOption... options)`用于文件复制。 - **`InputStream`和`OutputStream`**:通过读写流的方式...

Global site tag (gtag.js) - Google Analytics