【发布时间】:2016-03-01 22:03:54
【问题描述】:
我有一个名为 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
我想按行读取和存储,即第二列的每一行都会分配给数组的每个索引),只是想在存储第二列时排除第一列。
【问题讨论】:
-
你看过
String#split()吗?另外,“第二列”真的是指“除了第一个空格分隔的标记之外的所有内容”? -
首先,有些行包含超过 2 列(假设单个或多个空格被视为分隔符)。之后,您阅读这些行而不将它们分成几部分
-
我已经在我的解码器方法中应用了拆分方法,它将逐个解码每个数字。但是我需要先阅读第二列,然后再应用解码器方法。
-
java.util.Scanner可能比BufferedReader更容易使用