学过了操作系统,突然不知道多线程有什么用了。

看了一下百度,发现多线程,可以提升系统利用率

在系统进行IO操作的时候,CPU可以处理一些其他的东西,等IO读取到内存后,CPU再处理之前的操作。

总之可以在用户层面,可以提升效率,不过,有时候多线程设计不当,调试也很麻烦

今天尝试一下简单的查找文件后缀以txt 里的内容 demo

SeachFileContent类,用来查询文件内容

package 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);
}
}
}
}

SearchFileThread类,用来多线程处理文件内容的查询

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);
}
}
}
}

Java 多线程查找文件中的内容的更多相关文章

  1. linux命令---查找文件中的内容

    linux命令---查找文件中的内容   [yang@localhost ~]$ cat 1.txt |egrep '123456789|second'-------匹配123456789或者seco ...

  2. java中的文件读取和文件写出:如何从一个文件中获取内容以及如何向一个文件中写入内容

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...

  3. java代码将excel文件中的内容列表转换成JS文件输出

    思路分析 我们想要把excel文件中的内容转为其他形式的文件输出,肯定需要分两步走: 1.把excel文件中的内容读出来: 2.将内容写到新的文件中. 举例 一张excel表中有一个表格: 我们需要将 ...

  4. Java IO把一个文件中的内容以字符串的形式读出来

    代码记录(备查): /** * 把一个文件中的内容以字符串的形式读出来 * * @author zhipengs * */ public class FileToString { public sta ...

  5. 在java中读取文件中的内容

    package shi; import java.io.*; public class wenjianIO { public static void main(String agrs[]){ File ...

  6. JAVA多线程读写文件范例

    在写之前先声明,本文是基于之前在博客园网站上检索到的一份JAVA多线程读写文件的示例,我在写自己的程序时是在那位作者写的基础上做了改良,但已不记得原文的地址.如果有知情者,烦请帖出地址,我在此文上加入 ...

  7. 从Excel文件中读取内容

    从Excel文件中读取内容 global::System.Web.HttpPostedFileBase file = Request.Files["txtFile"]; strin ...

  8. Java-Runoob-高级教程-实例-数组:10. Java 实例 – 查找数组中的重复元素-un

    ylbtech-Java-Runoob-高级教程-实例-数组:10. Java 实例 – 查找数组中的重复元素 1.返回顶部 1. Java 实例 - 查找数组中的重复元素  Java 实例 以下实例 ...

  9. 向txt文件中写入内容(覆盖重写与在末尾续写+FileOutputStream与FileWriter)(转发:https://blog.csdn.net/bestcxx/article/details/51381460)

    !!!! 读取txt文件中的内容 import java.io.BufferedReader; import java.io.File; import java.io.FileReader; /** ...

随机推荐

  1. 如何bitbucket上删除项目

    老外网页操作习惯不同,删除项目的按钮,我花了半天,突然瞟到delete,如下图(真他妈的隐蔽,记住这2017/3/7):

  2. 划分LUN

    划分LUN http://mp.weixin.qq.com/s?__biz=MzAwNzU3NzQ0MA==&mid=209842199&idx=1&sn=7d77fdf7a8 ...

  3. 小希的迷宫(hdu1272 并查集)

    http://acm.sdut.edu.cn:8080/vjudge/contest/view.action?cid=259#problem/D Description 上次Gardon的迷宫城堡小希 ...

  4. Py之pandas:dataframe学习【转载】

    转自:https://www.tutorialspoint.com/python_pandas/python_pandas_dataframe.htm 1.数据框4特性 列是不同类型的数据元素. 每列 ...

  5. openstack 部署笔记--dashboard

    控制节点 # yum install openstack-dashboard # vim /etc/openstack-dashboard/local_settings OPENSTACK_HOST ...

  6. CMFCPropertyGridProperty的使用

    设定初始值 CString str(_T("Button")); COleVariant cOlevariant(str); pTypeProperty->SetOrigin ...

  7. ML实践详细经典教程----用例图、顺序图、状态图、类图、包图、协作图

    面向对象的问题的处理的关键是建模问题.建模可以把在复杂世界的许多重要的细节给抽象出.许多建模工具封装了UML(也就是Unified Modeling Language?),这篇课程的目的是展示出UML ...

  8. IIS注册WEB服务扩展

    .net framework和iis那个先装的?如果先装IIS,然后再装.net的话,没有问题.但是如果顺序反了的话,需要在命令行里面执行 C:\Windows\Microsoft.NET\Frame ...

  9. javascript函数定义以及常见用法

                  我们知道,js函数有多种写法,函数声明 ,函数表达式,Function式构造函数,自执行函数,包括Es6的箭头函数,Class类写法,高阶函数,函数节流/函数防抖,下面我就 ...

  10. Docker深入浅出1

    Docker是一个开源的应用容器引擎,基于GO语言并遵从apache2.0协议开源. Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植的容器中,然后发布到任何流行的Linux机器上 ...