/
itokar98
/
HomeWorkCoreFileTask3
Обзор
Документация
Войти
/
itokar98
/
HomeWorkCoreFileTask3
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/Main.java
85 строк
3 KB
Ilya Tokar
First commit
13 окт 2025, 03:58
13 окт 2025, 03:58
fc9db6f
Код
Авторство
О чём код?
import java.io.*; import java.util.ArrayList; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; public class Main { public static void main(String[] args) { String zipFilePath = "savegames/saves.zip"; String unpackDir = "savegames"; // Распаковываем архив openZip(zipFilePath, unpackDir); // Загружаем и выводим все сохранения List<GameProgress> allSaves = loadAllSaves(unpackDir); System.out.println("\n=== ВСЕ ЗАГРУЖЕННЫЕ СОХРАНЕНИЯ ==="); for (int i = 0; i < allSaves.size(); i++) { System.out.println("Сохранение " + (i + 1) + ": " + allSaves.get(i)); } } public static void openZip(String zipFilePath, String unpackDir) { File unpackFolder = new File(unpackDir); if (!unpackFolder.exists()) { unpackFolder.mkdirs(); } try (FileInputStream fis = new FileInputStream(zipFilePath); ZipInputStream zis = new ZipInputStream(fis)) { ZipEntry entry; while ((entry = zis.getNextEntry()) != null) { String entryName = entry.getName(); File outputFile = new File(unpackDir, entryName); try (FileOutputStream fos = new FileOutputStream(outputFile)) { byte[] buffer = new byte[1024]; int length; while ((length = zis.read(buffer)) > 0) { fos.write(buffer, 0, length); } } System.out.println("Распакован: " + entryName); zis.closeEntry(); } } catch (IOException e) { System.out.println("Ошибка распаковки: " + e.getMessage()); } } public static GameProgress openProgress(String saveFilePath) { try (FileInputStream fis = new FileInputStream(saveFilePath); ObjectInputStream ois = new ObjectInputStream(fis)) { return (GameProgress) ois.readObject(); } catch (IOException | ClassNotFoundException e) { System.out.println("Ошибка загрузки " + saveFilePath + ": " + e.getMessage()); return null; } } // Метод для загрузки всех сохранений из папки public static List<GameProgress> loadAllSaves(String saveDir) { List<GameProgress> saves = new ArrayList<>(); File dir = new File(saveDir); File[] saveFiles = dir.listFiles((d, name) -> name.endsWith(".dat")); if (saveFiles != null) { for (File saveFile : saveFiles) { GameProgress progress = openProgress(saveFile.getPath()); if (progress != null) { saves.add(progress); } } } return saves; } }