Created
May 22, 2025 06:32
-
-
Save untainsYD/702d8023286b26b3fd8dbe014361640f to your computer and use it in GitHub Desktop.
Laboratory 5, Task 1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package lab5.fileio; | |
| import lab3.tram.Hour; | |
| import java.io.*; | |
| /** | |
| * Клас для роботи з трамвайними зупинками через бінарні файли. | |
| * Реалізує операції читання та запису даних у бінарному форматі. | |
| */ | |
| public class TramStopWithBinaryFile extends TramStopWithFile { | |
| private Hour[] hours = new Hour[0]; | |
| /** | |
| * Конструктор за замовчуванням | |
| */ | |
| public TramStopWithBinaryFile() { | |
| super(); | |
| } | |
| /** | |
| * Конструктор з параметрами | |
| * @param name назва зупинки | |
| * @param routeNumbers номери маршрутів | |
| * @param hours години роботи | |
| */ | |
| public TramStopWithBinaryFile(String name, int[] routeNumbers, Hour[] hours) { | |
| super(name, routeNumbers, hours); | |
| } | |
| @Override | |
| public Hour[] getHours() { | |
| return hours.clone(); | |
| } | |
| @Override | |
| public void setHours(Hour[] hours) { | |
| this.hours = (hours != null) ? hours.clone() : new Hour[0]; | |
| } | |
| /** | |
| * Читання даних з бінарного файлу | |
| * @param fileName ім'я файлу для читання | |
| * @throws IOException у разі помилки введення-виведення | |
| */ | |
| @Override | |
| public void readFromFile(String fileName) throws IOException { | |
| try (DataInputStream input = new DataInputStream(new FileInputStream(fileName))) { | |
| // Читання назви зупинки | |
| String name = input.readUTF(); | |
| setName(name); | |
| // Читання номерів маршрутів | |
| int routesCount = input.readInt(); | |
| int[] routes = new int[routesCount]; | |
| for (int i = 0; i < routesCount; i++) { | |
| routes[i] = input.readInt(); | |
| } | |
| setRouteNumbers(routes); | |
| // Читання годин роботи | |
| int hoursCount = input.readInt(); | |
| Hour[] hours = new Hour[hoursCount]; | |
| for (int i = 0; i < hoursCount; i++) { | |
| int passengers = input.readInt(); | |
| String comment = input.readUTF(); | |
| hours[i] = new Hour(passengers, comment); | |
| } | |
| setHours(hours); | |
| } | |
| } | |
| /** | |
| * Запис даних у бінарний файл | |
| * @param fileName ім'я файлу для запису | |
| * @throws IOException у разі помилки введення-виведення | |
| */ | |
| @Override | |
| public void writeToFile(String fileName) throws IOException { | |
| try (DataOutputStream output = new DataOutputStream(new FileOutputStream(fileName))) { | |
| // Запис назви зупинки | |
| output.writeUTF(getName()); | |
| // Запис номерів маршрутів | |
| int[] routes = getRouteNumbers(); | |
| output.writeInt(routes.length); | |
| for (int route : routes) { | |
| output.writeInt(route); | |
| } | |
| // Запис годин роботи | |
| Hour[] hours = getHours(); | |
| output.writeInt(hours.length); | |
| for (Hour hour : hours) { | |
| output.writeInt(hour.getPassengersCount()); | |
| output.writeUTF(hour.getComment()); | |
| } | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment