如何为 java 中的文件定义值对象
how to define value object for file in java
我编写了一个程序,它创建了 3 个 .txt 格式的文件并将一些数据写入其中。
现在我被要求为这些文件定义一个值对象,并覆盖 toString 方法,然后当我读取文件时将它们设置为值对象。
现在我完全糊涂了,不知道从哪里开始。
预先感谢您的帮助
如果您想首先从文本文件创建对象,您要做的是读取文件。 JavaAPI中有很多可用的classes可以用来读取文件:BufferedReader
、FileReader
等。
您将创建的对象数量将取决于文件中的行数。例如,如果您有一个包含以下内容的文件
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
我编写了一个程序,它创建了 3 个 .txt 格式的文件并将一些数据写入其中。 现在我被要求为这些文件定义一个值对象,并覆盖 toString 方法,然后当我读取文件时将它们设置为值对象。 现在我完全糊涂了,不知道从哪里开始。 预先感谢您的帮助
如果您想首先从文本文件创建对象,您要做的是读取文件。 JavaAPI中有很多可用的classes可以用来读取文件:BufferedReader
、FileReader
等。
您将创建的对象数量将取决于文件中的行数。例如,如果您有一个包含以下内容的文件
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