我有一个名为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
我想按行读取和存储,即第二列中的每一行都将分配给数组的每个索引),只想在存储第二列时排除第一列。
最佳答案
这将拆分行并保留第一个令牌之后的所有内容
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);
}
关于java - 读取文件文本的特定部分,然后将它们添加到数组中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35734504/