读取文件文本的特定部分,然后将它们添加到数组中

时间:2016-03-01 22:03:55

标签: java arrays file

我有一个名为messages.txt的文件文本如下:

6107586533  44335557075557777
4848675309  53366 6699044404666804448
6107584096  94466602777330999666887770223377778077778 883 336687777

第一列表示收件人的数字,第二列表示数字编码的邮件(我将使用解码器方法解码我已创建的第二列数字。)我使用以下方法读取文件文字:

public void readMessagesFromFile() throws Exception{
 BufferedReader in = new BufferedReader(new FileReader("messages.txt"));
 String str;

 List<String> list = new ArrayList<String>();
 while((str = in.readLine()) != null){
     list.add(str);
 }

 String[] stringArr = list.toArray(new String[3]);
 for (String x: stringArr) {
     System.out.print(x);
}
}

然而,它存储了所有内容(应该如下):

6107586533  443355570755577774848675309 53366 66990444046668044486107584096 94466602777330999666887770223377778077778 883 336687777

如何阅读和存储以下部分:

    44335557075557777
    53366 6699044404666804448
    94466602777330999666887770223377778077778 883 336687777

我想以行的形式阅读和存储,即。第二列中的每一行都将分配给数组的每个索引),只想在存储第二列时排除第一列。

1 个答案:

答案 0 :(得分:1)

这将分割线并将所有内容保留在第一个标记

之后
 List<String> list = new ArrayList<String>();
 while((str = in.readLine()) != null){
     String[] temp = str.trim().split("\\s+",2);
     list.add(temp[1]);
 }

trim的调用以防万一有空白。

关于将代码转换为数组,您不需要它,您可以遍历列表。

 for (String s : list)
 {
     System.out.println(s);
 }