Java 读取文件文本的特定部分,然后将它们添加到数组中
我有一个名为messages.txt的文本文件,如下所示:Java 读取文件文本的特定部分,然后将它们添加到数组中,java,arrays,file,Java,Arrays,File,我有一个名为messages.txt的文本文件,如下所示: 6107586533 44335557075557777 4848675309 53366 6699044404666804448 6107584096 94466602777330999666887770223377778077778 883 336687777 第一列表示收件人的编号,第二列表示数字编码的消息(我将使用解码器方法对我已经创建的第二列数字进行解码)。我使用以下方法读取文件文本: public void read
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);
}
}
如何仅读取和存储以下部分:
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]);
}
你看过
String#split()
了吗?此外,“第二列”真的是指“除第一个空格分隔的标记外的所有内容”吗?首先,有些行包含超过2列(假设单个或多个空格被视为分隔符)。在那之后,你不用把每一行都分成几部分来读。我已经在我的解码方法中应用了拆分方法,它会一块一块地解码每一个数字。但是我需要先读第二列,然后我将应用解码器方法。java.util.Scanner
可能比BufferedReader
更易于使用,它给出了以下结果:44335557075577557753366699046668048946660277733099996668877722337780777883 33668777777。它存储第二列,而不遵循我提到的特定模式。
List<String> list = new ArrayList<String>();
while((str = in.readLine()) != null){
String[] temp = str.trim().split("\\s+",2);
list.add(temp[1]);
}
for (String s : list)
{
System.out.println(s);
}