`

java 实现 文件操作工具集。包括文件、目录树的拷贝、删除、移动、查找等工具函数

阅读更多

import java.io.*;

/**
* 文件操作工具集。包括文件、目录树的拷贝、删除、移动、查找等工具函数。
* @author InternetTeam3
* @version 1.0
*/
public class FileTool{

/**
* 复制单个文件。源和目标必须都是文件,不能是目录。
* @param src 源文件。
* @param dest 目标文件。
* @param cover true表示如果目标文件存在则覆盖,false表示如果目标文件存在则抛出异常。
*/
public static void copy(File src, File dest, boolean cover)
throws IOException {
FileInputStream fis = new FileInputStream(src);
FileOutputStream fos = new FileOutputStream(dest);
byte[] buf = new byte[1024];
try {
int i;
while ((i=fis.read(buf))>=0) {
fos.write(buf,0,i);
}
} finally {
try {fis.close();} catch (Exception ex){}
try {fos.close();} catch (Exception ex){}
}
}

/**
* 复制目录树。
* 如果源和目标都是目录,则将源目录里的文件拷贝到目标目录里;
* 如果源是文件目标是目录,则将源拷贝到目标目录里面;
* 如果源是目录而目标是文件,则抛异常;
* 如果源和目标都是文件,则用源文件覆盖目标文件;
* 如果源是文件而目标不存在,则在目标位置创建文件;
* 如果源是目录而目标不存在,则以目标名称建立目录,并将源目录里内容拷贝至目标目录下。
* 如果源不存在,则抛异常。
* @param src 源文件或目录。
* @param dest 目的文件或目录。
* @param cover 目的文件存在是否覆盖,若是false则遇到该覆盖文件时将抛异常。
*/
public static void copytree(File src,File dest,boolean cover)
throws IOException {
if (src.isFile()) {
copy(src,dest,cover);
} else { // src是目录或不存在
File[] children = src.listFiles(); //若src不存在这里会抛异常
for (int i=0;i<children.length;i++) {
File f = new File(dest,children[i].getName());
if (children[i].isDirectory()) { //对于src的每个子目录
f.mkdirs(); //创建目标子目录,如果已经存在则会忽略
copytree(children[i],f,cover); //递归
} else { //对于src下每个文件
copy(children[i],f,cover);
}
}
}
}

/**
* 复制目录树。
* 如果源和目标都是目录,则将源目录里的文件拷贝到目标目录里;
* 如果源是文件目标是目录则将源拷贝到目标目录里面;
* 如果源是目录而目标是文件,则抛异常;
* 如果源和目标都是文件则用源文件覆盖目标文件;
* 如果源是文件而目标不存在则在目标位置创建文件;
* 如果源是目录而目标不存在则在以目标名称建立目录并将源目录里内容拷贝至目标目录下。
* 如果源不存在则抛异常。
* @param src 源文件或目录。
* @param dest 目的文件或目录。
* @param cover 目的文件存在是否覆盖,若是false则遇到该覆盖文件时将抛异常。
*/
public static void movetree(File src, File dest, boolean cover) throws IOException {
copytree(src,dest,cover);
deltree(src);
}

/**
* 删除文件或整个目录树。
* @param f 文件或目录。
*/
public static void deltree(File f) {
File[] children = f.listFiles();
if (children!=null && children.length!=0) {
for (int i=0;i<children.length;i++) {
deltree(children[i]);
}
}
f.delete();
}

/**
* 在一个目录及其子目录下查找符合条件的文件或目录。
* @param filter 文件过滤条件。该接口的accept方法如果返回true则中止查找,否则继续查找,
* 对文件的处理请在该接口的accept()方法里完成。
* @param root 查找开始的位置。
* @return 是否找到。
*/
public static boolean find(File root, FileFilter filter) {
if (filter.accept(root)) {
return true;
} else {
File[] children = root.listFiles();
if (children==null || children.length==0) {
return false;
} else {
for (int i=0;i<children.length;i++) {
if (find(children[i],filter)) {
return true;
}
}
return false;
}
}
}
}

分享到:
评论

相关推荐

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

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    java源码包2

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

    java源码包3

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

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

    Java访问权限控制源代码 1个目标文件 摘要:Java源码,文件操作,权限控制 Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流...

    java源码包4

     Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...

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

    Java访问权限控制源代码 1个目标文件 摘要:Java源码,文件操作,权限控制 Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流...

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

    Java访问权限控制源代码 1个目标文件 摘要:Java源码,文件操作,权限控制 Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流...

    JAVA程序员面试问题

    它不仅包括单个文件的管理,还涉及目录结构的设计,以方便文件的分类和查找。在UNIX和类UNIX系统中,所有文件和目录都组成一棵树状结构,根目录为"/"。目录结构的设计应遵循一定的原则,如保持层次清晰、命名规范等...

    Java面试题和答案.pdf

    - **JDK(Java Development Kit)**: 在JRE的基础上增加了编译工具(javac)、打包工具(jar)等开发工具,是进行Java开发的完整工具包。 **2. == 和 equals 的区别是什么?** - **==**: 用于比较基本数据类型的值或...

    嵌入式+芯片手册相关单词表

    在编程中,文件操作是非常重要的功能之一,包括文件的创建、读取、写入和删除等操作。 #### 3. 新 (New) 在编程上下文中,“新”通常用于表示创建新的对象或实例。例如,在C++中,`new` 关键字用于动态分配内存并...

    《剑指Offer》题目及代码.pdf

    1. 赋值运算函数:通常指的是复制构造函数,负责实现对象的深拷贝。在C++中,如果类中包含动态分配的资源,则必须重载赋值运算函数以确保资源被正确复制。 2. 单例设计模式:保证一个类只有一个实例,并提供一个...

    易语言程序免安装版下载

     为实现静态编译,易语言编译器、核心支持库、集成开发环境(IDE)等均有重大更新,支持库开发架框有扩展性调整,绝大多数官方支持库都已针对静态编译完成自身改造并提供静态库。  目前绝大多数官方支持库均已支持...

Global site tag (gtag.js) - Google Analytics