有时候看日志文件,因为超过了一个G,太大了打不开,工具也不好使,所以写了个小程序将文件按固定的文件大小切割一下。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class TestCutFile {
public TestCutFile() {
}
public static void main(String[] args) throws IOException{
int count = cutFile("D://daily.log.2016-10-08", 30000000);
// int count = 52;
findStr(count);
}
public static int cutFile(String fileName, int size) {
int count = 1;
try {
BufferedReader bf = new BufferedReader(new InputStreamReader(new FileInputStream(fileName),"UTF-8"));
int len;
char[] cbuf = new char[size];
while ((len = bf.read(cbuf, 0, size)) != -1) {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(fileName + '_' + count + ".txt"),"UTF-8"));
bw.write(cbuf, 0, len);
bw.flush();
bw.close();
count++;
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return count;
}
/**
* 找到指定的字符串
* @param count
*/
public static void findStr(int count) {
String strToFind = "103474142";
String a1 = "103474143";
String a2 = "service:[smsService],id:[103474144]";
String a3 = "103474145";
for (int i = 1; i <= count; i++) {
String fileName = "D://daily.log.2016-10-08" + '_' + i + ".txt";
try {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(fileName)));
String sline;
while ((sline = br.readLine()) != null) {
if (sline.contains(strToFind)||sline.contains(a1)||sline.contains(a2)||sline.contains(a3)) {
System.out.println(fileName);
}
}
br.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}