Java 按关键字删除文件中的行
直接上代码。
package test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class DeleteLineFromBigFile {
public static void main(String[] args) {
File inFile = new File("Y:\\YQY\\S2S\\workspace\\test\\src\\test\\input.sql");
File outFile = new File("Y:\\YQY\\S2S\\workspace\\test\\src\\test\\output.sql");
BufferedReader br = null;
String readedLine;
BufferedWriter bw = null;
try {
FileWriter fw = new FileWriter(outFile);
bw = new BufferedWriter(fw);
if (!outFile.exists()) {
outFile.createNewFile();
}
br = new BufferedReader(new FileReader(inFile));
int idx = 0;
while ((readedLine = br.readLine()) != null) {
if (readedLine.contains("2016-")) {
continue;
}
bw.write(readedLine + "\n");
if (idx++ == 100) {
bw.flush();
idx = 0;
}
}
bw.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (br != null) {
br.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if (bw != null) {
bw.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
搜索642M(压缩后15M)的文件,用了5秒左右,可以接受。