JAVA8,解析文本文件并将其值解析为对象

标签 java file object text mapping

我有如下所示的特定文本文件:

name: meeting_name1
description: 
04/18/2012 00:00:00
05/18/2012 00:00:00
... (more dates)
07/18/2012 00:00:00
name: meeting_name2
description: some_desc
04/18/2012 00:00:00
05/18/2012 00:00:00
... (more dates)
07/18/2012 00:00:00
(etc)

我的java对象看起来像这样:

class Meeting {
    String name;
    String description;
    List<Date> dates;
}

我的观点是读取文件、解析值、创建对象并将它们保存到数据库。

我可以逐行读取文件并将其转换为 List<String> , IE。所有数据放在一起。 `我可以创建一个 java 对象并用值填充它并将其保存到数据库中。

我的问题是如何发现我处于新对象开始的日期和行(名称:meeting_name2)的末尾。

所以我可以做类似 List<List<String>> 的东西哪里List<String>将等于一个对象,即。 List<Meeting>

不确定是否可以理解,抱歉格式错误。

最佳答案

假设您可以将文件数据读取到List变量。 (见上面的答案)

List<String> lines = Files.readAllLines(Paths.get("FILE_NAME"));

现在,您可以看到下面的代码作为演示。这是简单的循环和 if else 语句。 希望对您有帮助。

public static void main(String[] args) throws ParseException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
        List<String> data = new ArrayList<>();
        data.add("name: meeting_name1");
        data.add("description: some_desc");
        data.add("07/18/2012 00:00:00");
        data.add("07/18/2012 00:00:00");
        data.add("name: meeting_name2");
        data.add("description: some_desc");
        data.add("07/18/2012 00:00:00");

        List<Meeting> result = new ArrayList<>();
        Meeting temp = null;
        for (String line : data) {
            if (line.startsWith("name:")) {
                temp = new Meeting(line.split(":")[1].trim());
                result.add(temp);
            } else if (line.startsWith("description:")) {
                temp.setDescription(line.split(":")[1].trim());
            } else {
                temp.getDates().add(simpleDateFormat.parse(line)); // Use date for
            }
        }
        System.out.println(result.get(0).getName() + ": " + result.get(0).getDates().size()); // meeting_name1: 2
        System.out.println(result.get(1).getName() + ": " + result.get(1).getDates().size()); // meeting_name2: 1    
    }

    static class Meeting {
        String name;
        String description;
        List<Date> dates;

        public String getName() {
            return name;
        }

        public List<Date> getDates() {
            return dates;
        }

        Meeting(String name) {
            this.name = name;
            this.dates = new ArrayList<>();
        }

        public void setDescription(String description) {
            this.description = description;
        }
    }

关于JAVA8,解析文本文件并将其值解析为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52648509/

相关文章:

java - 在 robocode 中前往 map 中心

java - 如何从我的项目中获取文件(编写代码的地方)

text - 将两个文本文件合并为一个 CSV 文件

c++ - 使用对象指针时访问冲突读取

javascript - 函数的对象语法困惑

java - JTable 的任何单元格中更改的正确事件是什么?

java - 如何在 Wicket 中将两个 List PropertyModels 合并为一个模型

java - 通过 FTP 下载图片并出现 Java 防火墙问题

bash - 一行文件的 "$(cat file)"、 "$(<file)"和 "read ... < file"有什么区别?

Javascript 对象的 shift()