文件夹及子文件夹遍历,并找到内容含有特定字符串的文件
2013-05-11 20:29
323 查看
import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.sql.Time; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashSet; import java.util.LinkedList; import java.util.List; public class test { private static int count; public static void main(String[] args) { long begin=System.currentTimeMillis(); getFile01(new File("D:/work/"),"String"); // getFile02(new File("D:/work/"),"String"); long end=System.currentTimeMillis(); System.out.println(end-begin); System.out.println(count); } //递归遍历文件夹 public static void getFile01(File f,String str){ //判断f是否为null if(f==null){ System.out.println("路径为空,重新传入"); return; //判断f是否非文件夹 }else if(f.isFile()){ System.out.println("路径非文件夹,请重新传入"); return; //判断f是否 存在 }else if(!f.exists()){ System.out.println("无此路径,请重新输入"); return; } //列出当前文件夹下的所有文件和文件夹 File[] fs=f.listFiles(); BufferedReader bfr=null; String line=""; //循环遍历所有文件和文件夹 for (int i = 0; i < fs.length; i++) { //判断是否是文件 if(fs[i].isFile()){ containStr(fs[i], str); //如果是文件夹,就递归调用本方法 }else{ getFile01(fs[i],str); } } } //采用队列的方法进行查找 public static void getFile02(File f,String str){ //判断f是否为null if(f==null){ System.out.println("路径为空,重新传入"); return; //判断f是否非文件夹 }else if(f.isFile()){ System.out.println("路径非文件夹,请重新传入"); return; //判断f是否 存在 }else if(!f.exists()){ System.out.println("无此路径,请重新输入"); return; } LinkedList<File> list=new LinkedList<File>(); //列出当前文件夹下的所有文件和文件夹 File[] fs=f.listFiles(); for (int i = 0; i < fs.length; i++) { if(fs[i].isDirectory()){ list.add(fs[i]); }else{ containStr(fs[i], str); } } File temp=null; while(!list.isEmpty()){ temp=list.removeFirst(); if(temp.isFile()){ containStr(temp,str); }else{ File[] files=temp.listFiles(); if(files==null){ continue; } for (int i = 0; i < files.length; i++) { if(files[i].isDirectory()){ list.add(files[i]); }else{ containStr(files[i], str); } } } } } public static void containStr(File f,String str){ if(str==null||(str!=null&&str.equals(""))){ System.out.println("test.containStr()"+"请输入合法的字符串"); return; }else if(!f.isFile()){ System.out.println("test.containStr()"+"非文件夹,请重新输入"); } BufferedReader bfr=null; String line=""; try { bfr=new BufferedReader(new FileReader(f)); //读取一段 line=bfr.readLine(); //循环读取每一段,判断其中是否含有字符串str,如果含有,就打印出来此完整文件名,并终止此循环读取 while(line!=null){ if(line.indexOf(str)!=-1){ System.out.println(f.getCanonicalPath()); count++; break; } line=bfr.readLine(); } }catch (FileNotFoundException e) { e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); } } }
相关文章推荐
- python程序2(递归查找某一个文件夹下所有的文件是否含有某个特定的字符串,并打印该文件名)
- shell 遍历目录 批量解压文件名含有某字符串及特定后缀的文件
- linux下 c语言递归遍历文件夹下所有文件和子文件夹(附上替换文本文件内容的方法)
- python遍历文件夹找到包含某字符串的文件
- Java 遍历指定文件夹及子文件夹下的文件
- php 遍历一个文件夹下的所有文件和子文件夹
- PHP遍历文件夹及子文件夹所有文件
- C# 遍历文件夹下所有子文件夹中的文件,得到文件名
- shell 修改配置文件中含有特定字符串的行的值
- 循环遍历修改文件夹下的文件以及子文件夹内文件的后缀名
- 文件夹递归遍历搜索特定文件
- c++利用windows api遍历指定文件夹及其子文件夹中的文件
- HDFS练习5-----删除指定目录下的所有的空文件和空文件夹(包含子文件夹下的内容)
- c#遍历一个文件夹下的所有文件包括子文件夹
- 利用递归遍历文件夹下所有文件以及子文件夹
- java循环遍历文件夹及其子文件夹和文件
- C#遍历某个文件夹的文件及子文件夹
- 将文件夹及其子文件夹中的含有某关键字词的文件进行关键词的替换
- python使用os.walk和os.path.join来遍历文件夹的文件(包括子文件夹下的文件)
- PHP遍历文件夹下所有文件和子文件夹