java:只要找到新的日期就读取文件

guykilcj  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(231)

我想读取文件并将每个条目添加到某个日期的arraylist中。但日期也应该包括在内。
文件示例:
15.09.2002你好,这是第一次参赛。
\这行,我还需要在第一个条目。
\这行,我还需要在第一个条目\这行,我还需要在第一个条目。
17.10.2020,这是下一个条目
我试过了。但读者只读第一行

public class versuch1 {
public static void main(String[] args) {
    ArrayList<String> liste = new ArrayList<String>();
    String lastLine = "";
    String str_all = "";
    String currLine = "";
    try {
        FileReader fstream = new FileReader("test.txt");
        BufferedReader br = new BufferedReader(fstream);
        while ((currLine = br.readLine()) != null) {
            Pattern p = Pattern
                    .compile("[0-3]?[0-9].[0-3]?[0-9].(?:[0-9]{2})?[0-9]{2} [0-2]?[0-9]:[0-6]?[0-9]:[0-5]");
            Matcher m = p.matcher(currLine);
            if (m.find() == true) {
                lastLine = currLine;
                liste.add(lastLine);

            } else if (m.find() == false) {
                str_all = currLine + " " + lastLine;
                liste.set((liste.indexOf(currLine)), str_all);

            }

        }
        br.close();

    } catch (Exception e) {
        System.err.println("Error: " + e.getMessage());

    }

    System.out.print(liste.get(0) + " "+liste.get(1);
 }
}
kjthegm6

kjthegm61#

在读这些行的时候,保留一个“当前条目”。
如果读取的行以日期开头,则它属于新条目。在这种情况下,将当前条目添加到条目列表中,并创建一个由读取行组成的新的当前条目。
如果行没有以日期开头,只需将其添加到当前条目中。
为此,您需要在循环之前将第一行读入当前条目。在循环之后,您需要将当前条目添加到条目列表中。只有在至少有一行并且第一行以日期开头时,这才起作用。所以对于没有线的特殊情况要特别处理(如果没有线就用)。如果第一行不是以日期开头,则报告错误。
快乐的编码。

mzaanser

mzaanser2#

我已经解决了我的问题:)

public class versuch1 {
public static void main(String[] args) {
    ArrayList<String> liste = new ArrayList<String>();
    String lastLine = "";
    String currLine = "";
    String str_all = "";
    try {
        FileReader fstream = new FileReader("test.txt");
        BufferedReader br = new BufferedReader(fstream);
        currLine = br.readLine();
        while (currLine != null) {
            Pattern p = Pattern
                    .compile("[0-3]?[0-9].[0-3]?[0-9].(?:[0-9]{2})?[0-9]{2} [0-2]?[0-9]:[0-6]?[0-9]:[0-5]");
            Matcher m = p.matcher(currLine);
            if (m.find() == true) {
                liste.add(currLine);
                lastLine = currLine;

            } else if (m.find() == false) {
                liste.set((liste.size() - 1), (str_all));
                lastLine = str_all;

            }
            currLine = br.readLine();
            str_all = lastLine + currLine;
        }

    } catch (Exception e) {
        System.err.println("Error: " + e.getMessage());

    }

    System.out.print(liste.get(1) + " ");
}

}

相关问题