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

how to define value object for file in java

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

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

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

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

你首先需要做的是创建一个 class 来表示这个对象,正如我们在文本文件中看到的那样,该对象将包含三个参数,所以你创建一个 class 包含三个属性

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, surname, 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