Почему при записи в файл в начале появляются невидимые символы которые влияют на вывод результата? Как решить данную проблему?
После выполнения кода в файле будет такая строка: "
После считывания данных из файла будет такой результат: Person(, 1835012), а должен быть Person(Alex, 28)
import java.io.*;
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person(" + name + ", " + age + ")";
}
}
interface EntityInput {
public Person readPerson() throws IOException;
}
interface EntityOutput {
public void writePerson(Person person) throws IOException;
}
class EntityOutputStream implements EntityOutput {
private final DataOutput out;
EntityOutputStream(OutputStream out) {
this.out = new DataOutputStream(out);
}
@Override
public void writePerson(Person person) throws IOException {
out.writeInt(person.getAge()); // запись возраста
if (person.getName() == null) {
out.writeUTF("defaultName");
} else {
out.writeUTF(person.getName()); // запись имени
}
}
}
class EntityInputStream implements EntityInput {
private final DataInput src;
EntityInputStream(InputStream src) {
this.src = new DataInputStream(src);
}
@Override
public Person readPerson() throws IOException {
return new Person(src.readUTF(), src.readInt()); // Создание объекта Person c считанными данными
}
}
public class App {
public static void main(String[] args) throws IOException {
Person person = new Person("Alex", 28);
EntityOutputStream out = new EntityOutputStream(new FileOutputStream("c://file.txt"));
EntityInput in = new EntityInputStream(new FileInputStream("c://file.txt"));
out.writePerson(person); // Запись в файл данных о person
System.out.println(in.readPerson()); // Считывание данных о person из файла
}
}