/
itokar98
/
HomeWorkCoreFileTask2
Обзор
Документация
Войти
/
itokar98
/
HomeWorkCoreFileTask2
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/Main.java
97 строк
4 KB
Ilya Tokar
firts commit
13 окт 2025, 03:58
13 окт 2025, 03:58
a18774a
Код
Авторство
О чём код?
import java.io.*; import java.util.ArrayList; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class Main { public static void main(String[] args) { // 1. Создаем три экземпляра класса GameProgress GameProgress progress1 = new GameProgress(100, 3, 1, 0.0); GameProgress progress2 = new GameProgress(85, 5, 3, 150.5); GameProgress progress3 = new GameProgress(50, 2, 5, 420.7); // 2. Сохраняем сериализованные объекты List<String> savedFiles = new ArrayList<>(); savedFiles.add(saveGame("savegames/save1.dat", progress1)); savedFiles.add(saveGame("savegames/save2.dat", progress2)); savedFiles.add(saveGame("savegames/save3.dat", progress3)); // 3. Запаковываем файлы в архив zipFiles("savegames/saves.zip", savedFiles); // 4. Удаляем исходные файлы deleteFiles(savedFiles); System.out.println("Операция завершена успешно!"); } // Метод для сохранения игры public static String saveGame(String filePath, GameProgress progress) { try (FileOutputStream fos = new FileOutputStream(filePath); ObjectOutputStream oos = new ObjectOutputStream(fos)) { oos.writeObject(progress); System.out.println("Сохранение создано: " + filePath); return filePath; } catch (IOException e) { System.out.println("Ошибка при сохранении игры: " + e.getMessage()); return null; } } // Метод для упаковки файлов в архив public static void zipFiles(String zipPath, List<String> files) { try (FileOutputStream fos = new FileOutputStream(zipPath); ZipOutputStream zos = new ZipOutputStream(fos)) { for (String filePath : files) { if (filePath == null) continue; File file = new File(filePath); if (!file.exists()) { System.out.println("Файл не найден: " + filePath); continue; } try (FileInputStream fis = new FileInputStream(file)) { // Создаем новую запись в архиве ZipEntry entry = new ZipEntry(file.getName()); zos.putNextEntry(entry); // Читаем и записываем файл в архив byte[] buffer = new byte[1024]; int length; while ((length = fis.read(buffer)) > 0) { zos.write(buffer, 0, length); } zos.closeEntry(); System.out.println("Файл добавлен в архив: " + filePath); } catch (IOException e) { System.out.println("Ошибка при добавлении файла в архив: " + e.getMessage()); } } } catch (IOException e) { System.out.println("Ошибка при создании архива: " + e.getMessage()); } } // Метод для удаления файлов public static void deleteFiles(List<String> files) { for (String filePath : files) { if (filePath == null) continue; File file = new File(filePath); if (file.exists() && file.delete()) { System.out.println("Файл удален: " + filePath); } else { System.out.println("Не удалось удалить файл: " + filePath); } } } }