给指定字符串格式为时间格式,如:当前检索时间为 : 2012-09-05 15:15:04
#1,AA,0,2012-09-05 15:15:01
#2,BB,0,2012-09-05 15:15:02
#3,CC,-35.2,2012-09-05 15:15:03
#4,EE,-8.58,2012-09-05 15:15:04
#5,FF,7,2012-09-05 15:15:05
#6,HH,35.38,2012-09-05 15:15:06
#7,II,9.29,2012-09-05 15:15:07
.
.
.
.
#9999,XX,9.29,2012-09-05 16:15:07文本文件中含有与时间 : 2012-09-05 15:15:04 匹配的项,
就取出当前条目 #4,EE,-8.58,2012-09-05 15:15:04
请高手帮忙。如何快速的取出存在的数目(可能含有多条)
Ps : 分不够。有满意的答案,俺再加分。。
#1,AA,0,2012-09-05 15:15:01
#2,BB,0,2012-09-05 15:15:02
#3,CC,-35.2,2012-09-05 15:15:03
#4,EE,-8.58,2012-09-05 15:15:04
#5,FF,7,2012-09-05 15:15:05
#6,HH,35.38,2012-09-05 15:15:06
#7,II,9.29,2012-09-05 15:15:07
.
.
.
.
#9999,XX,9.29,2012-09-05 16:15:07文本文件中含有与时间 : 2012-09-05 15:15:04 匹配的项,
就取出当前条目 #4,EE,-8.58,2012-09-05 15:15:04
请高手帮忙。如何快速的取出存在的数目(可能含有多条)
Ps : 分不够。有满意的答案,俺再加分。。
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;public class Test { public static void main(String[] args){
try {
FileInputStream fin = new FileInputStream("info.txt");
InputStreamReader fr = new InputStreamReader(fin);
BufferedReader br = new BufferedReader(fr);
String time = "2012-09-05 15:15:04";
String line = br.readLine();
while (line != null) {
if (line.indexOf(time) > 0) {
System.out.println(line);
}
line = br.readLine();
}
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
System.out.println(line);
以时间为key打造成一个map的对象。
然后直接取map的key值。
1是把文件内容都装进内存,key为时间戳,value为你每行存储的东西。
2把文件按一定的规则划分成小文件,几千或者几百均可,通过当前检索时间可以定位到某个文件,在从该文件查找看是否存在你需要的东东。
2 行数多?你可以用并行啊,开多个线程一起解析(参考生产者,消费者模式)
3 一些类库支持全文检索,你也可以参考。但建立全文也需要时间。