使用java逐行解析文本文件的内容

使用java逐行解析文本文件的内容,java,string,parsing,field,line,Java,String,Parsing,Field,Line,我的文本文件具有上述格式 每行表示与修补程序相关的信息 第一列是补丁id,第二列是发行版,第三列代表客户端。 如何逐行读取文件将补丁存储到数组列表中并将字段解析为列只需查找:BufferedReader from FileReader->readLine() 然后用绳子把它们分开 并使用add()添加到ArrayList 。。。实际上,有时候Java就像用简单的英语写你想做的事情一样,你的需求可以通过Java BufferedReader中的readLine()方法来实现。Eash行可以存储在A

我的文本文件具有上述格式

每行表示与修补程序相关的信息 第一列是补丁id,第二列是发行版,第三列代表客户端。
如何逐行读取文件将补丁存储到数组列表中并将字段解析为列

只需查找:BufferedReader from FileReader->readLine()

然后用绳子把它们分开

并使用add()添加到ArrayList


。。。实际上,有时候Java就像用简单的英语写你想做的事情一样,你的需求可以通过Java BufferedReader中的readLine()方法来实现。Eash行可以存储在ArrayList中,然后可以拆分每个字符串以获得单个单词

要分割字符串,可以尝试使用StringTokenizer类。示例用法如下:

3375577.3   131  STSTWMS
3375577.4   131  STSTWMS
3407108     131  STSTWMS
3407231     131  STSTWMS
3407280.1   131  STSTWMS
3407581     131  STSTWMS
3408483     131  STSTWMS
3409015     131  STSTWMS
3409015.1   131  STSTWMS
3409085.1   131  STSTWMS
3409364     131  STSTWMS
3409364.1   131  STSTWMS
此代码将删除字符串中的所有空格。

您可以使用类'
nextLine()
方法逐行读取文本。至于如何将其存储为列,请在每一行中找到拆分每一列的字符,例如:空格
'
或任何其他字符,并在类'
split()
方法中使用该字符

试着这样做:

StringTokenizer st = new StringTokenizer(str);
while (st.hasMoreElements()) {
    System.out.println(st.nextElement());
}
File File=new文件(“input.txt”);
扫描仪s=新扫描仪(文件);
而(s.hasNextLine()){
String String=s.nextLine();
列表列=Arrays.asList(string.split(“”));
}

如上所述的带有BufferedReader的版本

File file = new File("input.txt");
Scanner s = new Scanner(file);
while (s.hasNextLine()){
String string = s.nextLine();
List<String> columns = Arrays.asList(string.split(" "));
}
字符串行=”;
BufferedReader r=新的BufferedReader(新文件读取器(文件));
while((line=r.readline)!=null){
列表列=Arrays.asList(line.split(“”));
}

发布您尝试过的内容?FileInputStream fstream=newFileInputStream(“c:\\Downloads\\ibm10\u 20140416.list”);DataInputStream in=新的DataInputStream(fstream);BufferedReader br=新的BufferedReader(新的InputStreamReader(in));弦斯特林;while((strLine=br.readLine())!=null){System.out.println(strLine);String[]columns=strLine.split(“”);String patch_id=columns[0];String release=columns[1];String client=columns[2];3375577.3 131 STSTWMS 3407108 131 STSTWMS3375577.3 131 STSTWMS 3407108 131 STSTWMS第一行的解析进行得很好,但在第二行中我可以显示3字段(STWMS)。我认为由于拆分,第一行有2个空格,第二行有3个空格。我已更新了我的答案。您可以尝试使用StringTokenizer而不是String。拆分方法通过添加此行解决问题:String[]columns=strLine.split(\\s{2,4}”);
String line="";

 BufferedReader r = new BufferedReader(new FileReader(file));

while((line = r.readline) != null){

  List<String> columns = Arrays.asList(line.split(" "));

}