首页 » 网站建设 » php断定包括指定内容技巧_JAVA之多级目录下查找文件中是否含有某个字符串功能实现

php断定包括指定内容技巧_JAVA之多级目录下查找文件中是否含有某个字符串功能实现

duote123 2024-10-28 0

扫一扫用手机浏览

文章目录 [+]

想知道PHP的功能实现请查看我之前的文章:

php之多级目录下查找文件中是否含有某个字符串功能实现

php断定包括指定内容技巧_JAVA之多级目录下查找文件中是否含有某个字符串功能实现

以下是JAVA措辞实当代码:

php断定包括指定内容技巧_JAVA之多级目录下查找文件中是否含有某个字符串功能实现
(图片来自网络侵删)

package com.yzf.findword;import java.io.;import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;import java.util.Locale;import java.util.Scanner;import java.util.function.Consumer;/ @author yzf~ @version 1.0 在目录文件中查找指定字符 EncodingDetect类库下载地址: https://pan.baidu.com/s/1A0sU0EdbPHOcnCjz0E4TjA?pwd=tzh4 /public class FindWordInFile { private static int fileCount = 0;//查找到的文件数量 private String findWord = "";//须要查找的字串 private String result = "";//查找的结果 private String notes = "";//提示语 private boolean isFindMore = false;//是否多级目录下查找,默认不开启 / main入口 / public static void main(String[] args) throws IOException { Scanner scanner = new Scanner(System.in); System.out.println("请输入要查找的字符串[查找多个请用竖线“|”隔开]:"); String word = scanner.next(); System.out.println("请输入查找的目录或文件[支持多级目录查找]:"); String path = scanner.next(); System.out.println("是否在多级目录下探求[y/n]:"); String isFindMore = scanner.next(); FindWordInFile fileObj = new FindWordInFile(word, isFindMore); fileObj.findWordInDir(path); System.out.println(fileObj.getResult()); } / 布局器 @param findWord / public FindWordInFile(String findWord, String isFindMore){ this.findWord = findWord; this.isFindMore = isFindMore.toUpperCase(Locale.ROOT).equals("Y") ? true : false; } / 在文件中查找特定字符 @param files 查找的文件绝对路径 / public <F> void findWordInFile(F files) throws IOException { File file = null; String path = ""; if (files instanceof Path) { file = ((Path) files).toFile(); path = file.getPath(); } else { file = new File((String) files); path = (String) files; } if (!(file.exists() && file.isFile())) { notes += path + " [非文件]";return; } if (findWord.isEmpty() || "".equals(findWord)) { notes += path + "查找字符不能为空";return; } if (file.length() == 0) { notes += path + " [空文件]";return; } //得到文件编码格式 String fileCode = EncodingDetect.getJavaEncode(path); fileCode = fileCode!=null&&!"".equals(fileCode) ? fileCode : "UTF8"; //读取文件数据 BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path), fileCode)); //将字符串通过竖线|分割,以支持多个字符串查询 String[] strArr = findWord.split("\\|"); String readRes = null;//用于存储读到的结果 //遍历字符串数组 for (int i = 0; i < strArr.length; i++) { int line = 1;//记录行数 while ((readRes = br.readLine()) != null) {//读取一行 int location = readRes.indexOf(strArr[i]);//匹配字符串是否在该行中 if ( location != -1 ) {//判断匹配结果 result += path+" [第 "+line+" 行的第"+location+"位查找到字符:"+strArr[i]+"]\r\n"; break;//匹配到字符串,进入下一个字符串匹配 } line++; } } br.close();//关闭资源 if ("".equals(result)) { notes += "文件中没有查找到指定字符";return; } } / 在目录文件下中查找特定字符 @param path 查找的文件绝对路径 / public void findWordInDir(String path) throws IOException { //判断路径是否位目录 File dir = new File(path); if (dir.isDirectory()) {//目录 File[] files; if (this.isFindMore) {//多级目录下查找 files = dir.listFiles(); for (File file :files) { if (file.isDirectory()) { findWordInDir(file.toString()); } else { findWordInFile(file.toString()); } } } else {//当前目录文件下查找 Files.list(Paths.get(path)).filter(Files::isRegularFile).forEach(new Consumer<Path>() { @Override public void accept(Path path) { try { findWordInFile(path); } catch (IOException e) { e.printStackTrace(); } } }); } } else if (dir.isFile()) {//文件 findWordInFile(path); } } public String getResult() { return result; } public String getNotes() { return notes; }}

运行结果:

好了,欢迎小伙伴们留言评论。

标签:

相关文章

php紧缩tar技巧_Linux中tar解压缩敕令详解

语法:tar [主选项+辅选项] 文件或者目录利用该命令时,主选项是必须要有的,它见告tar要做什么事情,辅选项是赞助利用的,可以...

网站建设 2024-12-13 阅读0 评论0

php空间做署理技巧_PHP设计模式之代理模式

概述:为其他工具供应一种代理以掌握对这个工具的访问代理模式:为其他工具供应一种代理以掌握对这个工具的访问代理模式利用场合:第一种:...

网站建设 2024-12-13 阅读0 评论0