/
Letta21
/
WorkWithFiles
Обзор
Документация
Войти
/
Letta21
/
WorkWithFiles
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
MainGame.java
81 строка
4 KB
Letta21
upload files
15 дек 2025, 09:24
15 дек 2025, 09:24
85a3936
Код
Авторство
О чём код?
import java.io.*; import java.util.ArrayList; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class MainGame { public static void main(String[] args) { String savePath = "C:\\Users\\Letta\\Desktop\\Games\\savegames\\"; // Создаем три экземпляра игры GameProgress game1 = new GameProgress(100, 2, 1, 10.5); GameProgress game2 = new GameProgress(80, 5, 2, 200.1); GameProgress game3 = new GameProgress(50, 10, 5, 540.5); // Сохраняем сериализованные объекты saveGame(savePath + "save1.dat", game1); saveGame(savePath + "save2.dat", game2); saveGame(savePath + "save3.dat", game3); // Список путей к файлам для архивации ArrayList<String> arrayList = new ArrayList<>(); arrayList.add(savePath + "save1.dat"); arrayList.add(savePath + "save2.dat"); arrayList.add(savePath + "save3.dat"); // Создаем архив zipFiles(savePath + "zip.zip", arrayList); // Удаляем файлы сохранений, лежащие вне архива File file1 = new File(savePath + "save1.dat"); File file2 = new File(savePath + "save2.dat"); File file3 = new File(savePath + "save3.dat"); if (file1.delete()) System.out.println("Файл save1.dat удален"); if (file2.delete()) System.out.println("Файл save2.dat удален"); if (file3.delete()) System.out.println("Файл save3.dat удален"); } // Метод сохранения игры (сериализация) public static void saveGame(String path, GameProgress game) { // Используем try-with-resources для автоматического закрытия потоков try (FileOutputStream fos = new FileOutputStream(path); ObjectOutputStream oos = new ObjectOutputStream(fos)) { oos.writeObject(game); System.out.println("Сохранение записано: " + path); } catch (IOException e) { System.out.println(e.getMessage()); } } // Метод архивации public static void zipFiles(String path, List<String> files) { try (ZipOutputStream zout = new ZipOutputStream(new FileOutputStream(path))) { for (String filePath : files) { // Открываем поток чтения для каждого файла из списка try (FileInputStream fis = new FileInputStream(filePath)) { // Создаем новый элемент архива (ZipEntry) // Получаем только имя файла без пути, чтобы в архиве не было лишних папок File file = new File(filePath); ZipEntry entry = new ZipEntry(file.getName()); zout.putNextEntry(entry); // Считываем содержимое файла и пишем в архив byte[] buffer = new byte[fis.available()]; fis.read(buffer); zout.write(buffer); // Закрываем текущую запись в архиве zout.closeEntry(); } } System.out.println("Архив создан: " + path); } catch (Exception e) { System.out.println(e.getMessage()); } } }