Исходник JvmUtils

эксперт в майнкрафт апи
Read Only
Статус
Оффлайн
Регистрация
25 Янв 2023
Сообщения
676
Реакции[?]
284
Поинты[?]
22K
ну в try catch блоке лежит только конструктор и эррор хендлинг, но сам стрим почему то закрывается в любом случае
нет, любое раскидывание исключений в нормальном коде всегда подразумевает иммутабельность сущности с которой идет взаимодействие.
не думаю что в джаве сидят идиоты.
 
Начинающий
Статус
Оффлайн
Регистрация
8 Ноя 2023
Сообщения
163
Реакции[?]
5
Поинты[?]
14K
я поссорился со своим парнем и больше не могу хранить это в себе поэтому забирайте (это напоминает мне о нем)


код пон:
package cc.deus.pidoras;

import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.JarOutputStream;

public class Main {

    public static void main(String[] args) throws Exception {
        Map<String, byte[]> entries = new HashMap<>();
        try (JarFile jarFile = new JarFile("input.jar")) {
            jarFile.stream().forEach(entry -> {
                try {
                    String name = entry.getName();
                    byte[] data = jarFile.getInputStream(entry).readAllBytes();
                    if (name.endsWith(".class")) {
                        data[0] = (byte) 0xCA;
                        data[1] = (byte) 0xFE;
                        data[2] = (byte) 0xBE;
                        data[3] = (byte) 0xBA;
                    }
                    entries.put(name, data);
                } catch (Exception exception) {
                    throw new RuntimeException(exception);
                }
            });
        }
        JarOutputStream jos = new JarOutputStream(Files.newOutputStream(Paths.get("output.jar")));
        entries.forEach((name, data) -> {
            try {
                JarEntry entry = new JarEntry(name);
                jos.putNextEntry(entry);
                jos.write(data);
                jos.closeEntry();
            } catch (Exception exception) {
                throw new RuntimeException(exception);
            }
        });
        jos.close();
    }
}
На нахуй сефлкадерок теперь с реад онли)
 
(◣_◢)
Участник
Статус
Оффлайн
Регистрация
1 Фев 2021
Сообщения
447
Реакции[?]
152
Поинты[?]
71K
Начинающий
Статус
Оффлайн
Регистрация
8 Ноя 2023
Сообщения
163
Реакции[?]
5
Поинты[?]
14K
эксперт в майнкрафт апи
Read Only
Статус
Оффлайн
Регистрация
25 Янв 2023
Сообщения
676
Реакции[?]
284
Поинты[?]
22K
read only ambassador
Пользователь
Статус
Оффлайн
Регистрация
28 Июн 2022
Сообщения
630
Реакции[?]
110
Поинты[?]
14K
я поссорился со своим парнем и больше не могу хранить это в себе поэтому забирайте (это напоминает мне о нем)


код пон:
package cc.deus.pidoras;

import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.JarOutputStream;

public class Main {

    public static void main(String[] args) throws Exception {
        Map<String, byte[]> entries = new HashMap<>();
        try (JarFile jarFile = new JarFile("input.jar")) {
            jarFile.stream().forEach(entry -> {
                try {
                    String name = entry.getName();
                    byte[] data = jarFile.getInputStream(entry).readAllBytes();
                    if (name.endsWith(".class")) {
                        data[0] = (byte) 0xCA;
                        data[1] = (byte) 0xFE;
                        data[2] = (byte) 0xBE;
                        data[3] = (byte) 0xBA;
                    }
                    entries.put(name, data);
                } catch (Exception exception) {
                    throw new RuntimeException(exception);
                }
            });
        }
        JarOutputStream jos = new JarOutputStream(Files.newOutputStream(Paths.get("output.jar")));
        entries.forEach((name, data) -> {
            try {
                JarEntry entry = new JarEntry(name);
                jos.putNextEntry(entry);
                jos.write(data);
                jos.closeEntry();
            } catch (Exception exception) {
                throw new RuntimeException(exception);
            }
        });
        jos.close();
    }
}
прив спастил спс
 
Сверху Снизу