使用 readLine 存储带有空格的 txt 文件中的数据

Storing data from txt file with whitespaces with readLine

我正在尝试编写一个代码,该代码从有关一个人的 txt 信息中读取并将其存储在变量中,然后使用这些变量创建联系人,然后将该联系人添加到 ArrayList。当我执行该程序时,它说它无法解析电子邮件,就像它试图将电子邮件存储为日期一样。有什么办法可以避免这种情况吗?

    try
    {
        File file = new File(prop.getProperty("path"));
        FileReader fr = new FileReader (file);
        BufferedReader br = new BufferedReader(fr);
        
        String name, lastName, mail;
        Date birthDate;

        String line; 
        while((line = br.readLine())!=null) 
        { 
            if (!line.trim().equals("")) 
            { 
                name = br.readLine(); 
                lastName = br.readLine(); 
                
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
                birthDate = format.parse(br.readLine()); 
                
                mail = br.readLine(); 
                
                Contacto contacto = new Contacto(name, lastName, birthDate, mail); 
                gestor.addContact(contacto);
            }
        }
    }
        
    catch (Exception e) 
    {
        e.printStackTrace();
    }

我也试过这个,但是它存储了两次联系人:

String birth; 
while((name = br.readLine())!= null && (lastName = br.readLine())!= null && (birth = br.readLine())!= null && (mail = br.readLine())!= null)
{ 
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
    birthDate = format.parse(birth); 
                
    Contacto contacto = new Contacto(name, lastName, birthDate, mail); 
        gestor.addContact(contacto); 
}

txt 文件的结构如下:

Name 
LastName1 LastName2 
1970-01-01 
sample@mail.es

可以是这样的:

        try {
            File file = new File("/Users/soumyabratakole/test/test");
            FileReader fr = new FileReader(file);
            BufferedReader br = new BufferedReader(fr);
            String line;
            String name=null;
            String lastName1=null;
            String lastName2=null;
            Date birthDate=null;
            String email=null;
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

            int i=0;
            while ((line = br.readLine()) != null) {
                if (!line.trim().equals("")){
                    int j =i%5;
                    i ++;
                    switch (j){
                        case 0:
                            name = line;
                            break;
                        case 1:
                            lastName1 = line;
                            break;
                        case 2:
                            lastName2 = line;
                            break;
                        case 3:
                            birthDate = format.parse(line);
                            break;
                        case 4:
                            email = line;
                            break;
                    }
                    if (j == 4){
                        System.out.println("Name: " + name + ", Lastname " + lastName1 + " " + lastName2 + ", BDay " + birthDate + ", Email " + email);
//Other operations
                Contacto contacto = new Contacto(name, lastName1, birthDate, mail); 
                gestor.addContact(contacto);


                    }


                }

            }
        } catch (Exception e) {
            e.printStackTrace();
        }