求大神解惑下关于java读取txt的问题

qq_39777356 2017-10-25 04:06:58
有那种能用java处理txt文件的大神吗求解答,我被这个问题困惑很久了,下面的数据是我一个txt文件下的,读取有header的一行,然后后面的length后面表达的数是下面要读取从下条开始多少条的数据,读取下条数据时需要去掉前面的0:啊、1:啊类似的数字加冒号,还有length也要去掉,结果类似于
header:A5 07 A4 FB 8D 06 0C A2 00 00 05 45 ,datestamp:2017-10-01 00:00:05.7153028 +0800 CST,D8 47 10 BE C6 F8 FF A8 00 00 00 00 04 00 00 00 00 FF 98
header:A5 07 A4 FB 8D 06 0C A2 00 00 05 45 ,datestamp:2017-10-01 00:00:05.7153028 +0800 CST,88 25 93 C3 DB 3C FF BF 00 00 00 00 04 00 00 00 00 FF 98
这样的,读成这样的话,我能自己吧数据处理下然后放到数据库里了

下面的是原txt文件中的数据,求大神解答

header:A5 07 A4 FB 8D 06 0C A2 00 00 05 45 ,datestamp:2017-10-01 00:00:05.7153028 +0800 CST,length:11
0:D8 47 10 BE C6 F8 FF A8 00 00 00 00 04 00 00 00 00 FF 98
1:88 25 93 C3 DB 3C FF BF 00 00 00 00 04 00 00 00 00 FF 98
2:C4 36 55 A0 3E 39 FF B1 00 00 00 00 04 00 00 00 00 FF 98
3:A8 AD 3D 8C D0 90 FF B8 00 00 00 00 04 00 00 00 00 FF 98
4:C2 9F DB 95 80 98 FF C6 00 00 00 00 04 00 00 00 00 FF 98
5:B0 6E BF 26 58 10 FF CF 00 00 00 00 04 00 00 00 00 FF 98
6:F4 83 CD 3A FA D7 FF A7 00 00 00 00 04 00 00 00 00 FF 98
7:C2 9F DB 89 90 70 FF B8 00 00 00 00 04 00 00 00 00 FF 98
8:D4 EE 07 32 3A 3A FF A9 00 00 00 00 04 00 00 00 00 FF 98
9:C2 9F DB 95 7F A4 FF D2 00 00 00 00 04 00 00 00 00 FF 98
10:88 25 93 A2 5B DC FF B9 00 00 00 00 04 00 00 00 00 FF 98
header:A5 07 A4 FB 8D 06 0C A2 00 00 05 58 ,datestamp:2017-10-01 00:00:20.7155258 +0800 CST,length:6
0:D4 EE 07 32 3A 3A FF AA 00 00 00 00 04 00 00 00 00 FF 98
1:88 25 93 AF 7E EA FF B6 00 00 00 00 04 00 00 00 00 FF 98
2:B0 6E BF 26 58 18 FF E3 00 00 00 00 04 00 00 00 01 FF 96
3:D8 C8 E9 13 8C B0 FF AA 00 00 00 00 04 00 00 00 00 FF 98
4:CC 81 DA D7 3B 18 FF A7 00 00 00 00 04 00 00 00 00 FF 98
5:40 16 9F 46 4B E4 FF B9 00 00 00 00 04 00 00 00 00 FF 98

...全文
291 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39777356 2017-10-26
  • 打赏
  • 举报
回复
while((lineTxt = bufferedReader.readLine()) != null) { if(lineTxt.startsWith("header")){ header=lineTxt.substring(0,lineTxt.lastIndexOf(",")+1); }else{ String newStr=header+lineTxt.substring(lineTxt.indexOf(":")+1); } 我昨天还是用这种方法写出来了
  • 打赏
  • 举报
回复
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class Test1 {
public static void main(String[] args) throws Exception {
Pattern p = Pattern.compile("length:[0-9]+$");
Pattern p1 = Pattern.compile("^[0-9]+:");
BufferedReader br = new BufferedReader(new FileReader("D://a.txt"));
String str;
while ((str = br.readLine()) != null) {
Matcher m = p.matcher(str);
Matcher m1 = p1.matcher(str);
if (m.find()) {
System.out.println(str.replace(m.group(), ""));
continue;
}
if (m1.find()) {
System.out.println(str.replace(m1.group(), ""));
continue;
}
}
if (br != null) {
br.close();
}
}
}


lifewell1 2017-10-25
  • 打赏
  • 举报
回复
看规律 需要删除的数据都是有‘’:‘’的 要么开头要么结尾 使用字符流 按照行读取 然后把读取的值 进行正则判断 按照 开头是 ^[0-9]{2}: 或者length:$结尾的拆分 其他的拼接就是你要的

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧