Никак не соображу как записать/считать с текстового файла. В Интернете есть только примеры только с одним объектом. А если такая ситуация как у меня? Мое задание: в программу включить возможность записи данных классов в текстовый файл на диске и чтения их из текстового файла в программу. Огромное спасибо!
Как прочитать/записать в файл такого вида:
1 Abara 100 true
2 Lilu 100 true
...
Код моей программы:
Zoopark.java:
public class Zoopark {
public static void main(String[] args) {
Bassein V1 = new Bassein(2);
Waterfowl B = new Waterfowl("Vala", 100, true);
V1.putAnimal(B);
Waterfowl C = new Waterfowl("Lilu", 100, true);
V1.putAnimal(C);
Bird D = new Bird("Abara", 100, true);
V1.putAnimal(D);
OpenCage V2 = new OpenCage(4);
Ungulates E = new Ungulates("Kala", 1000, true);
V2.putAnimal(E);
Ungulates I = new Ungulates("Nala", 1000, true);
V2.putAnimal(I);
Ungulates F = new Ungulates("Mala", 1000, true);
V2.putAnimal(F);
Ungulates U = new Ungulates("Ala", 1000, true);
V2.putAnimal(U);
}
}
Animals.java:
abstract public class Animals {
private String name;
private int weight;
// is this boy?
private boolean isMale;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return weight;
}
public void setAge(int age) {
this.weight = weight;
}
public boolean isMale() {
return isMale;
}
public void setMale(boolean isMale) {
this.isMale = isMale;
}
public Animals(String name, int weight, boolean isMale) {
this.name = name;
this.weight = weight;
this.isMale = isMale;
}
}
Bassein.java
public class Bassein extends Valers {
Bassein(int maxAnimal) {
super(maxAnimal);
}
public void putAnimal(Waterfowl a) {
super.putAnimal(a);
}
public void putAnimal(Animals a) {
//super.putAnimal(a);
System.out.println("Не тот вид животного");
}
}
OpenCage.java
public class OpenCage extends Valers {
OpenCage(int maxAnimal) {
super(maxAnimal);
}
public void putAnimal(Ungulates a) {
super.putAnimal(a);
}
public void putAnimal(Animals a) {
//super.putAnimal(a);
System.out.println("Не тот вид животного");
}
}
Valers.java
import java.util.ArrayList;
import java.util.List;
public class Valers {
private int CageLimit;
List<Animals> result = new ArrayList<Animals>();
Valers(int maxAnimal) {
this.CageLimit = maxAnimal;
}
public void putAnimal(Animals a) {
int numAnimals=result.size();
if (numAnimals>=CageLimit) {
System.out.println("Вольер уже полный");
System.out.println(" ");
}
else {
this.result.add(a);
System.out.println("Животное добавлено в вольер");
System.out.println(" ");
}
}
public int getCageAnimals() {
return result.size();
}
}
Ungulates.java
public class Ungulates extends Animals {
public Ungulates(String name, int weight, boolean isMale) {
super(name, weight, isMale);
System.out.println(name + " " + weight + " " + isMale);
}
}
Waterfowl.java
public class Waterfowl extends Animals {
public Waterfowl(String name, int weight, boolean isMale) {
super(name, weight, isMale);
System.out.println(name + " " + weight + " " + isMale);
}
}
Создайте внутри классов методы save и load
public void save(OutputStrem out){
//в удобном вам порядке записываете свой объект
}
public Object load (InputStream in){
//читаете в том же порядке, что и записывали
}
Либо можете использовать интерфейс serializable и используя ObjectOutputStream писать сразу объект, ObjectInputStream читать объект.
Так же можно использовать xml и json парсеры.
Замечу только, что вариант с serializable не даст вам читаемый для человека файл, остальные вполне читаемы.
В вашем случае вы можете создать методы сохранения загрузки у каждой сущности, а в объектах "бассейн" и "зоопарк" пройтись по всем сущностям и сохранить/загрузить их.
Полезная статья на хабре https://m.habrahabr.ru/post/60317/
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Вопрос как наладить взаимосвязь Thread и Activity если Thread не является внутренним классом Activity?
Всем привет! Как можно переместить маркер на карте Google Maps с анимацией?