Security Manager (IIOException: Can't read input file!)

hdjks

Mitglied
Hallo Leute!

ich schreibe im Moment ein Programm, welches ein Minecrafttexturepack entzippt und dann einige dateien aus einem Ordner der entzippten datei in ein Image-Objekt einlesen soll (*.png dateien). Jedoch bekomm ich immer folgende Exception: IIOException: Can't read input file!
Hier ist der Code, der das image-Objekt einliest:

Java:
blocks[x].get(0).setReadable(true);
        if(!(blocks[x].get(0) == null)) {
            System.out.println(blocks[x].get(0).canRead());
            Image image = ImageIO.read(blocks[x].get(0));
          
        } else {
            System.out.println("Failed.");
}

Analyse:
Zeile 1: code soll datei lesbar machen (klappt nicht wirklich)
Zeile 3: Code gibt aus, ob die datei lesbar ist (gibt false zurück)
Zeile 4: Code soll ein Image-Objekt erstellen(klappt nicht, da man die Datei laut security Manager nicht lesen darf.)

Was ich sehr komisch ist, dass die erste Zeile keine SecurityException wirft, was sie eigentlich tun sollte, wenn der Security Manager später in Zeile 3 sagt, dass man die Datei nicht lesen kann.

Ich habe schon eine Menge gegoogelt und ausprobiert, es hat jedoch nichts geklappt.

Ich hoffe ihr könnt mir helfen

hdjsk

PS:

Es könnte sein, das ich noch eine Frage offen gelassen habe
 

knilch

Bekanntes Mitglied
Hi,
Aus deinem kleinen CodeSnippet lässt sich nicht ermitteln, wie du die Icon-Datei entpackst..
Poste doch mal den Code, der dann das zip-file enpackt dann den von dir genannten code ausführt.

ps. das hier kannst du besser machen....
Java:
blocks[x].get(0).setReadable(true);
        if(!(blocks[x].get(0) == null)) {
            System.out.println(blocks[x].get(0).canRead());
            Image image = ImageIO.read(blocks[x].get(0));
        
        } else {
            System.out.println("Failed.");
}
in etwa so:
Java:
blocks[x].get(0).setReadable(true);
        if(blocks[x].get(0) != null) {
            System.out.println(blocks[x].get(0).canRead());
            Image image = ImageIO.read(blocks[x].get(0));
        
        } else {
            System.out.println("Failed.");
}
 

hdjks

Mitglied
Hier ist der Code der das Archiv entzippt:

Java:
public static  void unzip(String zipFilePath, String destDirectory) throws IOException {
        System.out.println("UnZip.unzip()");
        System.out.println("Unzipping");
        File destDir = new File(destDirectory);
        if (!destDir.exists()) {
            destDir.mkdir();
        }
        ZipInputStream zipIn = new ZipInputStream(new FileInputStream(zipFilePath));
        ZipEntry entry = zipIn.getNextEntry();
       
        while (entry != null) {
            String filePath = destDirectory + File.separator + entry.getName();
            if (!entry.isDirectory()) {
              
                extractFile(zipIn, filePath);
            } else {
              
                File dir = new File(filePath);
                dir.mkdir();
            }
            zipIn.closeEntry();
            entry = zipIn.getNextEntry();
        }
        zipIn.close();
    }
   
    private static void extractFile(ZipInputStream zipIn, String filePath) throws IOException {
        System.out.println("UnZip.extractFile()");
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));
        byte[] bytesIn = new byte[BUFFER_SIZE];
        int read = 0;
        while ((read = zipIn.read(bytesIn)) != -1) {
            bos.write(bytesIn, 0, read);
        }
        bos.close();
    }

Hoofe es hilft dir weiter
 

Ähnliche Java Themen

Neue Themen


Oben