如何在java中为文件定义值对象

问题描述

我编写了一个程序,该程序创建了 3 个 .txt 格式的文件并将一些数据写入其中。 现在我被要求为这些文件定义一个值对象,并覆盖 toString 方法,然后当我读取文件时将它们设置为值对象。 现在我完全糊涂了,不知道从哪里开始。 预先感谢您的帮助

解决方法

如果你想首先从文本文件创建对象,你要做的是读取文件。 Java API 中有许多可用的类可用于读取文件:BufferedReaderFileReader 等。 您将创建的对象数量取决于文件中的行数。例如,如果您有一个包含以下内容的文件

PersonName1,PersonSurname1,20
PersonName2,PersonSurname2,22
PersonName3,PersonSurname3,23

假设这些行代表一些用户的姓名和年龄

您首先需要做的是创建一个类来表示这个对象,正如我们在文本文件中看到的,该对象将包含三个参数,因此您创建了一个具有三个属性的类

public class Person {

    private String name;
    private String surname;
    private Integer age;

    public Person(String name,String surname,Integer age) {
        this.name = name;
        this.surname = surname;
        this.age = age;
    }

    @Override
    public String toString() {
        return "NAME : " + name + " : " + surname;
    }

现在是读取部分,为了读取文件,我们将使用 BufferedReader,我们通过在每次迭代时用逗号 (,) 分割行来读取文件的每一行

String [] parameters = line.split(",");

这个字符串数组现在将代表我们的用户属性,以便我们访问它

        String name = parameters[0];
        String surname = parameters[1];
        Integer age = Integer.parseInt(parameters[2]);

现在我们每次迭代都创建一个 Person 对象并将其添加到列表中

      Person p = new Person(name,surname,age);
      list.add(p);

示例

BufferedReader bufferedReader = new BufferedReader(new FileReader("test.txt"));

        List<Person> list = new ArrayList<>();

        String line = null;

    

while((line = bufferedReader.readLine())!=null){
        try {
            String[] parameters = line.split(",");
            if(parameters.length == 3) {
                String name = parameters[0];
                String surname = parameters[1];
                Integer age = Integer.parseInt(parameters[2]);
                Person p = new Person(name,age);
                list.add(p);
            }
        }catch (NumberFormatException e){
        }
    }

    System.out.println("Object created from the file");
    list.stream().forEach(System.out::println);

输出

NAME : PersonName1 : PersonSurname1
NAME : PersonName2 : PersonSurname2
NAME : PersonName3 : PersonSurname3