我有一个文件,在读取文件后,我需要将文件中的第三行提取到java中的变量或结构中,从而将特定列的详细信息提取到不同的数组变量中。
BufferedReader br = null;
String strLine = "";
try {
LineNumberReader reader = new LineNumberReader(new InputStreamReader(new FileInputStream(fileName), "UTF-8"));
while (((strLine = reader.readLine()) != null) && reader.getLineNumber() <= 3){
System.out.println(strLine);
}
reader.close();
} catch (FileNotFoundException e) {
System.err.println("File not found");
} catch (IOException e) {
System.err.println("Unable to read the file.");
}
在这里,我似乎找不到只读第三行的方法,不知道如何做到这一点,更确切地说,在读了第三行之后,我需要将信息提取到数组列表中,并将它们单独存储。。。。
该文件的数据格式如下:所附数据型号:HELLO-421流程:ABCD ID:1234
批次ID:ABC123.5日期:2018年9月25日类别:你好CE
我可以在控制台中打印如下输出所附数据型号:HELLO-421流程:ABCD ID:1234
批次ID:ABC123.5日期:2018年9月25日类别:你好CE
因此,这里的挑战是如何将结果存储在输入数组中,并仅从结果集中读取/提取第3行的详细信息。
matlab版本中的等效代码如下:
hdr=textread(filename,'%s',3,'whitespace','n');
resultset=regexp(hdr{3},'^BATCH ID :(?<batch>[A-Z-.0-9]+)s+DATE :(?<tdate>[0-9/]+)s+CATEGORY :(?<category>[A-Za-z-0-9]+$)','names');
然后,一旦完成regexp,就使用resultset.batch进行提取;resultset.date;
如果我正确理解你的问题,你可以制作一个ArrayList<String>
,而不是打印strLine
变量,你可以将其添加到列表中。
然后你可以通过获得列表中的第三个元素来获得你需要的行:
String thirdLine = listName.get(2);