使用Java编写一个简易的本地文件的检索相关字的程序

</pre>目的:编写一个可以查找本地指定文件下下所有文件中包含相关字的文件<p></p><p>我的初衷是为了在本地的代码库中快速的找到已经编写过的包含特定功能的文件,当然要要使用这个程序的话,你必须有一定的命名和良好的注释习惯</p><p>目前这个程序刚写成,暂能实现简单的检索功能,我也在不断的提升这个程序的功能和效率,持续优化和完善</p><p></p><p></p><p></p><p><pre name="code" class="java">package searchfilesum;

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

public class Search {

	
	static String fileName = null;
	static String searchName = null;
	static Scanner input = new Scanner(System.in);
	
	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub


		System.out.println("请输入要查找的文件夹:");
		fileName = input.nextLine();
		System.out.println("请输入要查找的关键字:");
		searchName = input.nextLine();
		SearchFile sf = new SearchFile(fileName,searchName);
		
	}

}
class SearchFile {

	String fileName;
	ArrayList list;				//保存有相关字的文件路径
	String searchName;

	byte[] by;					//缓存字节数组
	File filesum;

	SearchFile(String fileName1, String searchName) throws IOException {	//输入要查找的文件夹以及关键字

		this.fileName = fileName1;
		this.searchName = searchName;
		filesum = new File(fileName);

		list = new ArrayList();					//用于存放包含关键字的文件的路径
		by = new byte[1024];			
		
		if(filesum.exists()){			//判断文件是否存在
			Search(filesum);
			if(list.size() != 0){
				for (Object lists : list) {			//遍历数组输出存在相关字的文件路径

					System.out.println(lists.toString());
				}
			} else {
				System.out.println("文件都不含有关键字");
			}
		} else {
			System.out.println("输入的文件不存在!");
		}
		
	}

	public void Search(File file) throws IOException {


		String filename2 = null;

		if (file.isDirectory()) {						//首先判断传入的文件是文件夹还是具体文件
			String[] s = file.list();
			File[] filelist = file.listFiles();
			for (File f : filelist) {
				Search(f);								//使用递归遍历文件夹下所有文件
			}
		} else {
			FileInputStream fis = new FileInputStream(file);
			InputStreamReader read = new InputStreamReader(fis, "gbk");
			BufferedReader bfr = new BufferedReader(read);
			
			filename2 = file.getAbsolutePath();		
			String line = null;

			int a = 0;
			while ((line = bfr.readLine()) != null) {
				if ((line.indexOf(searchName)) != -1) {		//每次读取一行进行关键字的查找
					list.add(filename2);					//若文件中包含关键字则将文件的路径添加到Ayyarlist中
					break;									//如果此文件包含关键字,则不需要再继续检索此文件
				}
			}
			bfr.close();
		}
	}
}


  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值