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

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

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

if (find(children[i],filter)) {

return true;

}

}

return false;

}

}

}

}

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

  1. java 去掉文件名后缀名_java 获取文件名(不包括文件的后缀)和文件重命名

    获取文件名(不包括后缀) originalFileName.substring(0, originalFileName.lastIndexOf(".")) 文件重命名 public ...

  2. c盘java文件误删_java获取C盘下的隐藏目录文件名称

    题记 --  执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天. 网易云课堂 在Java中, File类用来将文件或者文件夹封装成对象,方便对文件与文件夹的属性信息进行操作. Fil ...

  3. java命令 jar文件夹_java中jar命令打包一个文件夹下的所有文件

    (1)首先,必须保证java的所有路径都设置好,在dos提示符下输入jar -help 出现C:\Documents and Settings\dly>jar -help 非法选项:h 用法:j ...

  4. java 按行读取大文件文件内容_Java实现按行读取大文件

    Java实现按行读取大文件 String file = "F:" + File.separator + "a.txt"; FileInputStream fis ...

  5. java输出流输入流的使用_Java中的IO流之文件输入输出流

    Java中的IO流之文件输入输出流 1.文件流介绍 文件流是以字节为单位进行读写文件的,所以属于字节流,并且是低级流.文件流位于java.io包下. 输入输出流分别是FileInputSteam和Fi ...

  6. java 跨域上传_java后台图片跨域上传图片 文件

    发送方 @ResponseBody @RequestMapping(value="/imgUpLoadNewOneKuaYu")public String imgUpLoadNew ...

  7. java 输入流可以合并吗_Java 使用IO流实现大文件的分割与合并实例详解

    java 使用IO流实现大文件的分割与合并 文件分割应该算一个比较实用的功能,举例子说明吧比如说:你有一个3G的文件要从一台电脑Copy到另一台电脑, 但是你的存储设备(比如SD卡)只有1G ,这个时 ...

  8. java 获取配置文件的路径_java读取配置文件 ,得到工程所在的目录

    //读取配置文件//方法一InputStream in= this.getClass().getResourceAsStream("aa.properties");Properti ...

  9. 获取一个文件夹下所有的文件名(包括文件夹名)

    第一种方法:直接复制法 如果你是 Win10用户,恭喜你! Win10版本偷偷摸摸的新增了一个功能,99.99%的人都没有察觉,看完这篇文章,你就成了那0.01%.这个功能在文件管理器中,叫做复制路径 ...

  10. C语言编译时无法打开文件,在VS2010下编译无法打开包括文件:“GL/glaux.h”: No such file or director...

    最近测试了一个OpenGL的示例程序: #include #include #include "glos.h" void main(void) { auxInitDisplayMo ...

最新文章

  1. Go 学习笔记(68)— goroutine 并发控制神器 Context
  2. 胡锐锋:组队学习分享(队长)
  3. jQuery学习笔记——事件
  4. ecshop2.71 lbi库文件添加流程
  5. 如何deactivate Material delta download
  6. C语言编程模拟超市抹零结账,STL实践项目之用queue模拟超市结账环节
  7. python程序员专用壁纸_代码没写完,哪里有脸睡觉!17 张程序员壁纸推荐
  8. 隔年增长的题_资料分析——隔年增长
  9. 怎么让背景铺满整个页面_必能用到,一页PPT中想放超多图片怎么办?
  10. Maven学习总结(43)——利用javadoc插件生成项目的API文档
  11. BZOJ 2019 [Usaco2009 Nov]找工作:spfa【最长路】【判正环】
  12. Visio2010的下载
  13. WinHex修改二进制数据后无法保存的可能原因
  14. FFmpeg + SDL 的视频播放器的制作视频(雷神,雷霄骅)
  15. Facebook主页如何一键邀请加粉
  16. 信号指示RSSI与显示格数关系
  17. 肖特基二极管焊接注意事项和判断正负极的方法
  18. 一个屌丝程序员的青春(四九)
  19. C#如何使用skinEngine控件换肤(更换皮肤)?
  20. Android M Android6.0 权限管理 EasyPermission Demo

热门文章

  1. 企业邮箱domino跟exchange
  2. 部署应用程序到Tomcat的webapps目录
  3. 55.函数模板指针匹配(模板自动匹配*多的)
  4. Spring的一种拦截器SimpleUrlHandlerMapping
  5. UvaLive7362 Fare(欧拉函数)
  6. 人月神话-外科手术队伍:团队建设
  7. 作为一个职场中人的一些思考,关于做事的方式和思路
  8. 正则表达式去除括号的问题
  9. [翻译] TGLStackedViewController
  10. 【Spring.net点滴】