FileSearch.java

package test1;

import java.io.*;import java.util.ArrayList;import java.util.List;

/** * Created by 本地账户登录-xiaoCong on 2017/1/2. */public class FileSearch {// out/production/Java/test1/Test1.class    // E:\\IntelliJ\\Java\\out\\production\\Java\\test1//    public static String fileName = "";//    public static String srcPath = "";//    public static String desPath = "";

//public static String fileName = "Test1.class";    public static String fileName = "HasStatic.class";//    public static String fileName = "Test1.class";    public static String srcPath = "E:\\IntelliJ\\Java\\out\\production\\Java";    //todo 注意,使用中最后的斜杠一定要,不然会跟文件名拼在一起    public static String desPath = "E:\\IntelliJ\\Java\\out\\production\\Java\\sort\\";

public static void main(String[] args) {        FileSearch fileSearch  = new FileSearch();

//List<File> fileList = fs.searchFile("a.jpg", "E:\\huaxin\\fivechess");        //List<File> fileList = fileSearch.searchFile(fileName, srcPath);        List<File> fileList = fileSearch.searchFile(fileName, srcPath );

if (0!=fileList.size()) {            for (File file : fileList ) {                fileSearch.cutFileTo(file,desPath);            }        }    }

public void cutFileTo(File file, String desPath) {        //this.cutFile(file, new File(desPath + fileName));        //this.cutFile(file, new File(desPath + fileName+new Date()));        //SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:ss:ss");

//        UUID uuid = UUID.randomUUID();//        this.cutFile(file, new File(desPath+uuid.toString()+fileName));

String strFile = file.toString();        this.cutFile(file, new File(desPath + strFile.substring(strFile.lastIndexOf("\\"))));    }

//todo 剪切功能没实现    public void cutFile(File srcFile, File file2) {        InputStream inputStream = null;        FileOutputStream fileOutputStream = null;        byte[] bytes = new byte[1024];        int temp = 0;        try {            inputStream = new FileInputStream(srcFile);            fileOutputStream = new FileOutputStream(file2);            while ((temp = inputStream.read(bytes)) != -1) {                fileOutputStream.write(bytes, 0, temp);                fileOutputStream.flush();            }            //todo 这里应该删除原来的,srcFile  没删除成功            srcFile.delete();        } catch (IOException e) {            e.printStackTrace();        } finally {            if (inputStream != null) {                try {                    inputStream.close();                } catch (IOException e) {                    e.printStackTrace();                }            }            if (fileOutputStream != null) {                try {                    fileOutputStream.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }    }

public List<File> searchFile(String strFileName, String path) {        return this.searchFile(fileName, srcPath , new ArrayList<File>() );    }

//"Chess.java"    public List<File> searchFile(String strFileName, String path, List<File> fileList ) {//        List<File> fileList = new ArrayList<>();

// 关联文件对象        File file = new File(path);// 判断当前file是文件还是文件夹,是文件就输出文件绝对地址,是路径就继续查找        //todo 判断是否是文件夹        if (file.isFile()) {//是文件,或者用  !file.isDirectory()            //if (file.getName().equals(strFileName)) {  //判断查出的文件名和初始的文件名是否相同,相同就打印,不同就往下一级继续查询            //模糊匹配            if (file.getName().contains(strFileName)) {//将符合条件的地址打印在JTextArea中                //todo                fileList.add(file);//                this.cutFilesTo(file,desPath);//                System.out.println(file.getAbsolutePath());            }        } else {//是文件夹,递归            File[] files = file.listFiles();            if (files != null) {                for (int i = 0; i < files.length; i++) {// 将其中的文件夹遍历出来,并调用searchFile方法的调用                    File childFile = files[i];                      searchFile( strFileName,childFile.getAbsolutePath(),fileList);//这里用递归的思想,在方法中再调这个方法,完成在下一级目录的查询,一直到找出所有符合条件的文件                }            }        }

return fileList;    }

}

null

时间: 2024-10-24 18:05:40

FileSearch.java的相关文章

Solr4.8.0源码分析(7)之Solr SPI

Solr4.8.0源码分析(7)之Solr SPI 查看Solr源码时候会发现,每一个package都会由对应的resources. 如下图所示: 一时对这玩意好奇了,看了文档以后才发现,这个services就是java SPI机制.首先介绍下java SPI机制,然后再结合Solr谈一下SPI. 1. JAVA SPI 当服务的提供者,提供了服务接口的一种实现之后,在jar包的META-INF/services/目录里同时创建一个以服务接口命名的文件.该文件里就是实现该服务接口的具体实现类.而

【线程管理】之篇一

[线程管理]之篇一 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 亲爱我,孝何难:亲恶我,孝方贤. 一.简介 二.简单介绍线程创建和运行 三.线程信息的获取和设置 四.线程中断:interrupt() 或者 使用java异常控制 五.线程的休眠和恢复 六.等待线程的终止 一.简介 并发(Concurrency)指的是一系列任务的同时运行.如果一台电脑多个处理器或者多核处理器,这个同时性是真正意义上的并发:但一电脑只

Java内存泄露的理解与解决

Java内存管理机制 在C++语言中,如果需要动态分配一块内存,程序员需要负责这块内存的整个生命周期.从申请分配.到使用.再到最后的释放.这样的过程非常灵活,但是却十分繁琐,程序员很容易由于疏忽而忘记释放内存,从而导致内存的泄露.Java语言对内存管理做了自己的优化,这就是垃圾回收机制.Java的几乎所有内存对象都是在堆内存上分配(基本数据类型除外),然后由GC(garbage collection)负责自动回收不再使用的内存. 上面是Java内存管理机制的基本情况.但是如果仅仅理解到这里,我们

Java的内存泄漏_与C/C++对比(转载总结)

原文网址:http://developer.51cto.com/art/201111/302465.htm Java内存泄露的理解与解决(1) 一般来说内存泄漏有两种情况.一种情况如在C/C++ 语言中的,在堆中的分配的内存,在没有将其释放掉的时候,就将所有能访问这块内存的方式都删掉(如指针重新赋值):另一种情况则是在内存对象已经不需要的时候,还仍然保留着这块内存和它的访问方式(引用).第一种情况,在 Java 中已经由于垃圾回收机制的引入,得到了很好的解决.所以, Java 中的内存泄漏,主要

Java多线程之~~~Phaser类实现任务的同步

在多线程开发中,经常会碰到将多个任务分配给多个线程,每个线程执行他的任务,但是,每个任务又分为好几个 阶段,每个阶段期望各个线程同时达到,意思是,每一步每个线程都要同步,当有一个线程走完第一步的时候,他得等 待其他的线程都完成第一步了才能继续下一步,步调一致能解决很多问题.下面我们使用一个例子,这个例子是模拟遍 历机器上的一些文件,找出以log结尾的文件,并且他的最后修改时间为24小时以内,我们开启3个线程去完成这个任 务.并且使用Phaser来同步各个任务. package com.bird.

Java 7 Concurrency Cookbook 翻译 第一章 线程管理之二

三.中断一个线程 一个拥有多个线程的Java程序要结束,需要满足两个条件之一:一是所有的非后台线程都执行结束了:二是某个线程执行了 System.exit() 方法.当你想要终结一个运行中的Java程序或者程序的用户想要取消一个线程正在执行的任务时,你都需要结束一个线程. Java提供中断机制来表明我们想要终止一个线程.这个机制的核心是线程必须要检查自己是否被中断,而且线程自己决定是否响应中断请求.线程可以忽略该中断请求而继续执行. 在本秘诀中,我们将开发一个程序,这个程序创建线程,5秒后使用中

Java并发学习之四——操作线程的中断机制

本文是学习网络上的文章时的总结,感谢大家无私的分享. 1.如果线程实现的是由复杂算法分成的一些方法,或者他的方法有递归调用,那么我们可以用更好的机制来控制线程中断.为了这个Java提供了InterruptedException异常.当你检测到程序的中断并在run()方法内捕获,你可以抛这个异常. 2.InterruptedException异常是由一些与并发API相关的Java方法,如sleep()抛出的. 下面以程序解释 package chapter; import java.io.File

Java 内存泄露的理解与解决过程

本文详细地介绍了Java内存管理的原理,以及内存泄露产生的原因,同时提供了一些列解决Java内存泄露的方案,希望对各位Java开发者有所帮助. Java内存管理机制 在C++ 语言中,如果需要动态分配一块内存,程序员需要负责这块内存的整个生命周期.从申请分配.到使用.再到最后的释放.这样的过程非常灵活,但是却十分繁琐,程序员很容易由于疏忽而忘记释放内存,从而导致内存的泄露. Java 语言对内存管理做了自己的优化,这就是垃圾回收机制. Java 的几乎所有内存对象都是在堆内存上分配(基本数据类型

利用Java实现文件中的关键字查询

1 package com.sinsoft.fileSearch; 2 3 import java.io.BufferedReader; 4 import java.io.File; 5 import java.io.FileFilter; 6 import java.io.FileNotFoundException; 7 import java.io.FileOutputStream; 8 import java.io.FileReader; 9 import java.io.IOExcept