Java 多线程查找文件中的内容

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

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

在系统进行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);
            }
        }
    }
}

原文地址:https://www.cnblogs.com/Draymonder/p/9565110.html

时间: 2024-10-10 09:39:31

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

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

linux命令---查找文件中的内容 [[email protected] ~]$ cat 1.txt |egrep '123456789|second'-------匹配123456789或者second的行 first line:123456789012345678901234567890123456789012345678901234567890 second line:one two three four five six seven eight nine ten [[email pro

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

代码记录(备查): /** * 把一个文件中的内容以字符串的形式读出来 * * @author zhipengs * */ public class FileToString { public static void main(String[] args) { System.out.println(readFileToString()); } private static String readFileToString() { // new 一个空文件,用于获取路径 File dirs = ne

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

1 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.File; 6 import java.io.FileInputStream; 7 import java.io.FileNotFoundException; 8 import java.io.FileOutputStream; 9 import java.io.IOException; 10 import java.io.

在java中读取文件中的内容

1 package shi; 2 3 import java.io.*; 4 5 public class wenjianIO { 6 public static void main(String agrs[]){ 7 FileInputStream fis=null; 8 File f=new File("F:/test/javakc.txt"); 9 10 try { 11 fis=new FileInputStream(f); 12 byte[]arr=new byte[(int

JAVA中如何将文件中的内容读出并将值赋给相应变量

声明:文章为个人学习心得,也是个人主观总结,内容仅供参考. 将文件中的内容读出并赋值给变量,这个过程主要有如下几步: 1.将文件读入内存 2.将内存中的信息输出给相应的变量 只要理解了这个过程,代码实现起来就很简单了,我们需要一个文件输入流(FileInputStream),内存缓冲区,内存输出流(ByteArrayOutputStream).因此,我们将按照如下步骤进行程序的书写: 1.创建文件输入流 2.创建文件输入缓冲区 3.将文件读入到缓冲区中 4.创建内存输出流 5.将内存存放的信息输

JAVA多线程读写文件范例

在写之前先声明,本文是基于之前在博客园网站上检索到的一份JAVA多线程读写文件的示例,我在写自己的程序时是在那位作者写的基础上做了改良,但已不记得原文的地址.如果有知情者,烦请帖出地址,我在此文上加入引用或转载. 本程序是基于这么一种考虑,某系统后台有个将近2G大小的日志文件,你用任何编辑器去打开它,都将会很困难.针对这样的大文件解析处理,解决方案是使用多个线程,分割读取指定的大文件.获取我们所需要的信息.不多说,上代码了,有注释可以帮助理解. Java代码   package com.thre

《Linux学习并不难》Linux常用操作命令(14):grep命令查找文件中符合条件的字符串

8.14  <Linux学习并不难>Linux常用操作命令(14):grep命令查找文件中符合条件的字符串 使用grep命令可以查找文件内符合条件的字符串.          命令语法: grep [选项] [查找模式] [文件] 命令中各选项的含义如表所示. 选项 选项含义 -E 模式是一个可扩展的正则表达式 -F 模式是一组由断行符分隔的定长字符串 -P 模式是一个Perl正则表达式 -b 在输出的每一行前显示包含匹配字符串的行在文件中的字节偏移量 -c 只显示匹配行的数量 -i 比较时不

python 修改文件中的内容

在python的文件操作中,是没有办法对文件中具体某行或者某个位置的内容进行局部的修改的,如果需要对文件的某一行内容进行修改,可以先将文件中的所有的内容全部读取出来,再进行内容判断,是否是需要修改的内容,如果是就替换内容,并且将修改替换过的内容和没有修改的内容全部写入到新的文件中. # 打开旧文件 f = open('file_text.txt','r',encoding='utf-8') # 打开新文件 f_new = open('file_text_bak.txt','w',encoding

linux shell 脚本获取和替换文件中特定内容

1.从一串字符串中获取特定的信息 要求1:获取本机IP:menu.lst为系统镜象的IP配置文件,需要从中获取到本机IP信息(从文件获取信息) 1 timeout 1 2 default 0 3 4 title live 5 find --set-root /casper/vmlinuz 6 kernel /casper/vmlinuz boot=casper ignore_uuid showmounts ip=eth0,10.0.66.66,255.255.240.0,10.0.64.3 7