Java 多线程查找文件中的内容
2021-07-10 00:06
标签:目标 err [] color 其他 读取 todo 复制 dex 学过了操作系统,突然不知道多线程有什么用了。 看了一下百度,发现多线程,可以提升系统利用率 在系统进行IO操作的时候,CPU可以处理一些其他的东西,等IO读取到内存后,CPU再处理之前的操作。 总之可以在用户层面,可以提升效率,不过,有时候多线程设计不当,调试也很麻烦 今天尝试一下简单的查找文件后缀以txt 里的内容 demo SeachFileContent类,用来查询文件内容 SearchFileThread类,用来多线程处理文件内容的查询 Java 多线程查找文件中的内容 标签:目标 err [] color 其他 读取 todo 复制 dex 原文地址:https://www.cnblogs.com/Draymonder/p/9565110.htmlpackage thread;
import java.io.File;
import java.io.IOException;
public class SeachFileContent {
public static void main(String[] args) {
File file = new File("D://TT//Draymonder");
if(!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}else {
String content="复制";
searchFileContent(file,content);
}
}
public static void searchFileContent(File file, String content) {
if(file.isFile()) {
if(file.getName().toLowerCase().endsWith(".txt")) {
new SearchFileThread(file, content).start();
}
}
if(file.isDirectory()) {
File[] files = file.listFiles();
for(File singlefile : files) {
searchFileContent(singlefile, content);
}
}
}
}
package thread;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class SearchFileThread extends Thread {
private File file;
private String content;
SearchFileThread() {}
SearchFileThread(File file, String content) {
this.file = file;
this.content = content;
}
private String getFileContent(File file) {
try(FileReader fileReader = new FileReader(file)) {
char []all = new char[(int)file.length()];
fileReader.read(all);
return new String(all);
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
@Override
public void run() {
String str = getFileContent(this.file);
if(null != str) {
if(str.contains(this.content)) {
System.out.printf("在%s中含有 目标串\"%s\" ...%n",this.file.getName(),this.content);
}
}
}
}
上一篇:冒泡排序