📄 searchlocalfile.java
字号:
package search;
import java.io.*;
import java.util.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2002</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class SearchLocalFile implements Runnable{
String fileDir;
String searchString;
String[] fileName;
int[] countArray;
public SearchLocalFile() {
fileDir="";
searchString="";
}
public SearchLocalFile(String fileDir,String searchString) {
this.fileDir=fileDir;
this.searchString=searchString;
}
public String[] getFileName(){
File dir=new File(fileDir);
String fileName[]=dir.list();
this.fileName=fileName;
return fileName;
}
public void run(){//启动搜索线程
countArray = search(getFileName(),searchString);
display();
}
public int searchOneFile(String fileName,String searchString){
FileInputStream is;
BufferedReader in;
String text = "";
String temp = "";
int count=0;
int pos=0;
int len=searchString.length();
try{
is = new FileInputStream(fileDir+"/"+fileName);
in = new BufferedReader(new InputStreamReader(is,"UTF-8"));
//读取字符并搜索
while ( (temp = in.readLine()) != null) {
text += temp;
if((pos=text.indexOf(searchString))>=0){
count++;
text=text.substring(pos+len);
}
else if(text.length()>2*len){
text=text.substring(text.length()-len);
}
}
while((pos=text.indexOf(searchString))>=0){
count++;
text=text.substring(pos+len);
}
in.close();
is.close();
return count;
}
catch (FileNotFoundException e) {
return -1;
}
catch (IOException e) {
return -2;
}
}
public int[] search(String[] fileName ,String searchString){
int[] countArray=new int[fileName.length];
for(int i=0;i<fileName.length;i++){
countArray[i] = searchOneFile(fileName[i], searchString);
}
this.countArray=countArray;
return countArray;
}
private void display() {
MainFrame.display(">>>>>>>>>>>>>>>>>>>>>>>>>>\n");
String error = "";
if (fileName.length <= 0) {
MainFrame.display("没有搜索到任何文件\n");
}
else {
for (int i = 0; i < fileName.length; i++) {
if (countArray[i] < 0)
error += fileName[i]+";";
}
}
for (int i = 0; i < fileName.length; i++) {
if (countArray[i] > 0) {
String s = "击中" + countArray[i] + "次: ";
for (int j = i; j < countArray.length; j++) {
if (countArray[j] == countArray[i]) {
s += fileName[j] + ";";
countArray[j] = -3;
}
}
MainFrame.display(s + "\n");
}
}
if (!error.equals("")) {
MainFrame.display("无法处理的文件:" + error + "\n");
}
MainFrame.display("<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
}
// public static void main(String[] args) {
// SearchLocalFile searchLocalFile1 = new SearchLocalFile("d:/test","123");
//
// String[][] result =
// searchLocalFile1.search(searchLocalFile1.getFileName(),searchLocalFile1.searchString);
// for(int i=0;i<result.length;i++){
// System.out.println(result[i][0]+":"+result[i][1]+"次");
// }
//
// }
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -