java指定文件夹下查找固定的字符串并将其所在的文件名,行数,该行全部内容写入txt文件中(具体实例)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java指定文件夹下查找固定的字符串并将其所在的文件名,行数,该行全部内容写入txt文件中(具体实例)相关的知识,希望对你有一定的参考价值。
java在指定的文件夹下(这个文件夹下可以有很多文件,可以存在子路径),查找1个固定的字符串,将查找到的结果用下面的形式保存到另1个txt文件中
查找的文件名,行数,该行全部内容
下边是只针对文件本文件的方法。
andygulin 的只是不能遍历子文件夹。
--------------------------------------------------------------------
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.List;
public class Test
public static void main(String[] args) throws Exception
File root = new File("D:\\test");
String find = null;
List<String> result = new ArrayList<String>();
execute(root, find, result);
FileWriter fw = new FileWriter("D:\\result.txt");
for (String data : result)
fw.write(data + "\r\n");
fw.close();
public static void execute(File root, String find, List<String> result)
throws Exception
if (root.isFile())
return;
File[] files = root.listFiles();
for (File file : files)
if (file.isDirectory())
execute(file, find, result);
else if (file.isFile())
fileHandler(file, find, result);
public static void fileHandler(File file, String find, List<String> result)
throws Exception
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
try
int lineIndex = 0;
StringBuffer linenums = new StringBuffer("line:[");
boolean isSave = false;
while (br.ready())
String line = br.readLine();
lineIndex++;
if (line.indexOf(find) != -1)
linenums.append(lineIndex).append(",");
isSave = true;
if (isSave)
linenums.delete(linenums.length() - 1, linenums.length());
linenums.append("]");
result.add(file.getPath());
result.add(linenums.toString());
finally
br.close();
fr.close();
参考技术A import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
public class Test
public static void main(String[] args) throws Exception
String searchStr = "APPTYPEID";
File searchDir = new File("D:\\xampp\\htdocs\\discuz");
List<Search> list = new ArrayList<Search>();
Collection<File> files = FileUtils.listFiles(searchDir, null, true);
List<String> lines = null;
for (File file : files)
lines = FileUtils.readLines(file);
for (int i = 0; i < lines.size(); i++)
if (lines.get(i).indexOf(searchStr) != -1)
Search s = new Search();
s.setFilename(file.getName());
s.setLine(i + 1);
s.setContent(lines.get(i));
list.add(s);
StringBuffer sb = new StringBuffer();
for (Search s : list)
sb.append(s.getFilename() + " , " + s.getLine() + " , " + s.getContent()).append(
IOUtils.LINE_SEPARATOR);
FileUtils.writeStringToFile(new File("D:\\search.txt"), sb.toString(), "UTF-8");
class Search
private String filename;
private int line;
private String content;
public String getFilename()
return filename;
public void setFilename(String filename)
this.filename = filename;
public String getContent()
return content;
public void setContent(String content)
this.content = content;
public void setLine(int line)
this.line = line;
public int getLine()
return line;
Linux 查找当前目录下所有包含指定内容的文件
1.查找当前目录【./】中含用内容为zhang的所有文件
[cqs@centos7 data]$ grep -rl zhang ./
./a.txt
./b.txt
2.查找当前目录中含用内容为zhang的文件并将修改为“liu”
[cqs@centos7 data]$ sed -i "s/zhang/xxxx/g" `grep -rl zhang ./`
总结:sed -i "s/查找字符/替换字符/g" `grep 查找字符 -rl 目录路径`
以上是关于java指定文件夹下查找固定的字符串并将其所在的文件名,行数,该行全部内容写入txt文件中(具体实例)的主要内容,如果未能解决你的问题,请参考以下文章