Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 读取文件文本的特定部分,然后将它们添加到数组中_Java_Arrays_File - Fatal编程技术网

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

Java 读取文件文本的特定部分,然后将它们添加到数组中,java,arrays,file,Java,Arrays,File,我有一个名为messages.txt的文本文件,如下所示: 6107586533 44335557075557777 4848675309 53366 6699044404666804448 6107584096 94466602777330999666887770223377778077778 883 336687777 第一列表示收件人的编号,第二列表示数字编码的消息(我将使用解码器方法对我已经创建的第二列数字进行解码)。我使用以下方法读取文件文本: public void read

我有一个名为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);
}
}
如何仅读取和存储以下部分:

    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);
 }