Kann RandomAccessFile Zip Datei lesen?

fatfox

Bekanntes Mitglied
Hallo alle,

ich habe eben einen Beispiel im Internet über Zip Datei lesen mit Hilfe von RandomAceessFile.

Java Tips - How to read files within a zip file

Aber der Beispiel funktioniert gar nicht. Weil bei Zeil 39 bekommt man nur den DateiName ohne Pfad. Wie kann man das Beispiel korrigieren, damit es richtig funktioniert?

Java:
import java.io.*;
import java.util.zip.*;

class  readZipFiles 
{
    public static void main(String[] args) 
    {
         if (args.length != 1) 
        {
            System.out.println("Usage: java testFiles [zipfile path] ");
            return;
        }
        try
        {
            String filename = args[0];
            readZipFiles list = new readZipFiles( );
            list.readZipFiles(filename);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }

    public void readZipFiles(String filename)
    {
        try
        {
            byte[] buf = new byte[1024];
            ZipInputStream zipinputstream = null;
            ZipEntry zipentry;
            zipinputstream = new ZipInputStream(
                 new FileInputStream(filename));

            zipentry = zipinputstream.getNextEntry();
            while (zipentry != null) 
            { 
                //for each entry to be extracted
                String entryName = zipentry.getName();
                System.out.println("File ::"+entryName);
                RandomAccessFile  rf;
                File newFile = new File(entryName);
                String directory = newFile.getParent();

                if(directory == null)
                {
                    if(newFile.isDirectory())
                        break;
                }

                rf = new RandomAccessFile(entryName,"r");               
                String line;

                if ((line =rf.readLine()) !=null)
                {
                    System.out.println(line);
                }

                rf.close(); 
                zipinputstream.closeEntry();
                zipentry = zipinputstream.getNextEntry();

            }//while

            zipinputstream.close();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}
 
...ich habe eben einen Beispiel im Internet über Zip Datei lesen mit Hilfe von RandomAceessFile.

Java Tips - How to read files within a zip file

Aber der Beispiel funktioniert gar nicht. Weil bei Zeil 39 bekommt man nur den DateiName ohne Pfad. Wie kann man das Beispiel korrigieren, damit es richtig funktioniert?...

"Funktioniert nicht" is keine Fehlerbeschreibung!

Auf den ersten Blick schaut der Code eigentlich aus als sollte er funktionieren. Aber es wird hier kaum jemand den Code jetz hier kopieren und dann selbst ausprobieren was du wohl eventuell gemeint haben könntest.

Drück dich klar aus, dann kann man auch helfen.
 
Aber es wird hier kaum jemand den Code jetz hier kopieren und dann selbst ausprobieren was du wohl eventuell gemeint haben könntest.

Doch, hier! Da der Code vom genannten Link stammt und extrem grausig ist

- Klassenname klein
- zweimal Exceptions abgefangen
- Dinge definiert die man nicht braucht
- Deklaration und Definition ohne Sinn auseinander gezogen
- File verwendet und inhaltlich falsche Schlüsse gezogen um auf Verzeichnis zu testen, obwohl dies viel eleganter geht
- Verwendete Klasse seltsam benutzt
- Tut nicht das, was drüber steht
...

hab ich ihn mal etwas umgewurstet:

Java:
package zip;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

public class ReadZipFiles {

    public static void main(String[] args) {
        String filename = "c:/Users/Anwender/Downloads/galileocomputing_javainsel9.zip";
        try {
            ReadZipFiles list = new ReadZipFiles();
            list.readZipFiles(filename);
        }
        catch (Exception e) {
            System.out.flush();
            e.printStackTrace();
        }
    }

    public void readZipFiles(String filename) throws IOException {
        ZipInputStream zipInputStream = new ZipInputStream(
                new FileInputStream(filename));

        while (zipInputStream.available() == 1) {
            ZipEntry zipEntry = zipInputStream.getNextEntry();
            String entryName = zipEntry.getName();

            if (zipEntry.isDirectory())
                System.out.println("Directory ::" + entryName);
            else {
                System.out.println("File ::" + entryName);
                byte[] buffer = new byte[1024];
                zipInputStream.read(buffer);
                System.out.println("first 10 bytes are: " + buffer[0] + ", "
                        + buffer[1] + ", " + buffer[2] + ", " + buffer[3]
                        + ", " + buffer[4] + ", " + buffer[5] + ", "
                        + buffer[6] + ", " + buffer[7] + ", " + buffer[8]
                        + ", " + buffer[9]);
            }
        }

        zipInputStream.close();
    }
}

Ausgabe bei mir:

Code:
Directory ::bilder/
Directory ::bilderklein/
File ::bilderklein/klein02_001.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 48, 1, -6, 0
File ::bilderklein/klein365_java_00_v_002.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 127, 0, -6, 0
File ::bilderklein/klein365_java_01_014.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -78, 0
File ::bilderklein/klein365_java_02_009.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 78, 1, -6, 0
File ::bilderklein/klein365_java_02_013.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 64, 1, -6, 0
File ::bilderklein/klein365_java_03_003.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 41, 0
File ::bilderklein/klein365_java_03_004.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -6, 0
File ::bilderklein/klein365_java_03_005.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 105, 0
File ::bilderklein/klein365_java_03_006.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -91, 0
File ::bilderklein/klein365_java_03_007.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 100, 0
File ::bilderklein/klein365_java_04_001.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -83, 0
File ::bilderklein/klein365_java_04_004.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -84, 0
File ::bilderklein/klein365_java_06_014.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -67, 0
File ::bilderklein/klein365_java_06_019.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -49, 0, -6, 0
File ::bilderklein/klein365_java_06_031.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 84, 0
File ::bilderklein/klein365_java_07_001.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -96, 0
File ::bilderklein/klein365_java_07_002.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 91, 0
File ::bilderklein/klein365_java_07_006.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 66, 0
File ::bilderklein/klein365_java_07_008.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 30, 0
File ::bilderklein/klein365_java_08_003.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -100, 0, -6, 0
File ::bilderklein/klein365_java_09_002.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 47, 0
File ::bilderklein/klein365_java_09_003.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 86, 0
File ::bilderklein/klein365_java_09_004.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -74, 0, -6, 0
File ::bilderklein/klein365_java_09_005.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 65, 1, -6, 0
File ::bilderklein/klein365_java_09_006.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 23, 1, -6, 0
File ::bilderklein/klein365_java_10_003.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -69, 0, 107, 0
File ::bilderklein/klein365_java_11_006.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -77, 0
File ::bilderklein/klein365_java_12_002.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -47, 0
File ::bilderklein/klein365_java_12_003.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 91, 0
File ::bilderklein/klein365_java_12_004.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -39, 0
File ::bilderklein/klein365_java_12_006.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -92, 0
File ::bilderklein/klein365_java_12_008.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 75, 1, -6, 0
File ::bilderklein/klein365_java_12_009.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 124, 0
File ::bilderklein/klein365_java_12_016.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 103, 0
File ::bilderklein/klein365_java_14_005.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -2, 0, -6, 0
File ::bilderklein/klein365_java_14_007.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 58, 1, -6, 0
File ::bilderklein/klein365_java_14_009.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 49, 0
File ::bilderklein/klein365_java_14_011.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 51, 1, -99, 0
File ::bilderklein/klein365_java_14_013.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -11, 0, -52, 0
File ::bilderklein/klein365_java_14_015.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 1, 1, -99, 0
File ::bilderklein/klein365_java_14_016.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 124, 0, -6, 0
File ::bilderklein/klein365_java_14_025.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 85, 0
File ::bilderklein/klein365_java_14_026.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 55, 1, -115, 0
File ::bilderklein/klein365_java_15_013.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -13, 0
File ::bilderklein/klein365_java_16_007.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -56, 0
File ::bilderklein/klein365_java_16_008.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -87, 0
File ::bilderklein/klein365_java_16_011.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 39, 1, -6, 0
File ::bilderklein/klein365_java_18_002.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -91, 0
File ::bilderklein/klein365_java_20_001.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -22, 0
File ::bilderklein/klein365_java_24_001.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -70, 0
File ::bilderklein/klein365_java_24_003.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 110, 0, -6, 0
File ::bilderklein/klein365_java_25_001.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -122, 0
File ::bilderklein/kleinabstractbuttonuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -57, 0, -6, 0
File ::bilderklein/kleinabstractgameobject.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 70, 0, 34, 0
File ::bilderklein/kleinabstracttablemodeluml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -61, 0, -6, 0
File ::bilderklein/kleinactioneventactionlisteneruml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -67, 0
File ::bilderklein/kleinAdListenerAdEvent.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 98, 0
File ::bilderklein/kleinapi_doku_mathmax.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -85, 0
File ::bilderklein/kleinapi_doku_serversocket.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -84, 0
File ::bilderklein/kleinappletcontextuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 81, 1, -6, 0
File ::bilderklein/kleinarcchortpie.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 4, 1, 79, 0
File ::bilderklein/kleinareaoperations.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 61, 0
File ::bilderklein/kleinargument_parameter.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 104, 0
File ::bilderklein/kleinarraylistuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -5, 0, -6, 0
File ::bilderklein/kleinASCII_Code_Chart-Quick_ref_card.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 88, 1, -6, 0
File ::bilderklein/kleinauthenticator.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 120, 0
File ::bilderklein/kleinawteventuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -79, 0, -6, 0
File ::bilderklein/kleinbasicstrokedash.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 54, 0
File ::bilderklein/kleinbasicstrokeuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 5, 1, -6, 0
File ::bilderklein/kleinbeispiel.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 16, 0, 12, 0
File ::bilderklein/kleinbigbassloudspeaker.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -67, 0, -66, 0
File ::bilderklein/kleinbiguml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 64, 0
File ::bilderklein/kleinBingInAction.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -67, 0
File ::bilderklein/kleinBingPreview1.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 47, 1, -6, 0
File ::bilderklein/kleinBingPreview2.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -97, 0
File ::bilderklein/kleinbiplayerkenntroom.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -20, 0, 36, 0
File ::bilderklein/kleinbitsetuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 105, 0, -6, 0
File ::bilderklein/kleinbooleanuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -42, 0, -6, 0
File ::bilderklein/kleinborderdemo.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -111, 0
File ::bilderklein/kleinborderfactoryuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -49, 0
File ::bilderklein/kleinborderlayoutdemo.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -118, 0
File ::bilderklein/kleinborderuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -119, 0
File ::bilderklein/kleinBoxing.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 24, 1, 119, 0
File ::bilderklein/kleinbreakiteratoruml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -109, 0, -6, 0
File ::bilderklein/kleinbuyable.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 77, 0, 50, 0
File ::bilderklein/kleincalendarattributeuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 67, 0, -6, 0
File ::bilderklein/kleincalendarmethodenuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -116, 0, -6, 0
File ::bilderklein/kleincallableuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -10, 0, 74, 0
File ::bilderklein/kleincharsequenceuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -118, 0
File ::bilderklein/kleincheckurlapplet.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 81, 0
File ::bilderklein/kleinclassloaderurlclassloader.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -26, 0, -6, 0
File ::bilderklein/kleinclip.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -6, 0, -6, 0
File ::bilderklein/kleinclipboarduml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 108, 0
File ::bilderklein/kleinClockApplication.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 2, 1, 108, 0
File ::bilderklein/kleincollatoruml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -77, 0, -6, 0
File ::bilderklein/kleincollectionapiuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 76, 1, -6, 0
File ::bilderklein/kleincollectionuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -119, 0, -6, 0
File ::bilderklein/kleincomparatorcomparableuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 70, 0
File ::bilderklein/kleincomponentlisteneruml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -90, 0, -6, 0
File ::bilderklein/kleinconditionuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 63, 1, -84, 0
File ::bilderklein/kleinconnectionuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -79, 0, -6, 0
File ::bilderklein/kleinconstructorBytecode1.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -58, 0
File ::bilderklein/kleinconstructorBytecode2.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -58, 0
File ::bilderklein/kleincontaineruml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 50, 1, -6, 0
File ::bilderklein/kleincrc32adler32uml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 75, 1, -6, 0
File ::bilderklein/kleindatagramsocketpacketuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -9, 0
File ::bilderklein/kleindatatransferuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 14, 1, -6, 0
File ::bilderklein/kleindateformatsimpledateformatuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 26, 1, -6, 0
File ::bilderklein/kleindefaulthandleruml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 19, 1, -6, 0
File ::bilderklein/kleindefaultpackage.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -100, 0
File ::bilderklein/kleindefaulttablecellrendereruml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -49, 0
File ::bilderklein/kleindefaulttablemodeluml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -128, 0, -6, 0
File ::bilderklein/kleindoublefloatuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -79, 0, -6, 0
File ::bilderklein/kleindraganddrop.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -6, 0, -6, 0
File ::bilderklein/kleindrawarc.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 117, 0
File ::bilderklein/kleindrawoval.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -6, 0, 93, 0
File ::bilderklein/kleindrawroundrect.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 12, 1, -100, 0
File ::bilderklein/kleindrawtext.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -124, 0
File ::bilderklein/kleindrivermanageruml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -15, 0
File ::bilderklein/kleindungeon.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 75, 0, 64, 0
File ::bilderklein/kleinEclipseHandleUrlException.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 112, 0
File ::bilderklein/kleineclipseicon.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 115, 0, 50, 0
File ::bilderklein/kleinEclipseJavaDocF2.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -55, 0
File ::bilderklein/kleinEclipseURLCreateTryCatch.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 123, 0
File ::bilderklein/kleinEclipseWarningPocketRawType.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 88, 0
File ::bilderklein/kleinEclipseWarningPocketSetRawType.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 94, 0
File ::bilderklein/kleineclipse_addcasttoint.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 112, 0
File ::bilderklein/kleineclipse_changevisibility.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 94, 0
File ::bilderklein/kleineclipse_error.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -48, 0
File ::bilderklein/kleineclipse_if.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -125, 0
File ::bilderklein/kleineclipse_import_project.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -19, 0
File ::bilderklein/kleineclipse_installationsverzeichnis.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -98, 0
File ::bilderklein/kleineclipse_installed_jres.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -50, 0
File ::bilderklein/kleineclipse_new_class.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -40, 0, -6, 0
File ::bilderklein/kleineclipse_new_java_project.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 24, 1, -6, 0
File ::bilderklein/kleineclipse_new_project.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 15, 1, -6, 0
File ::bilderklein/kleineclipse_preferences_dirty.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 59, 1, -6, 0
File ::bilderklein/kleineclipse_run_as_javaapplication.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -94, 0
File ::bilderklein/kleineclipse_switch.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 125, 0
File ::bilderklein/kleineclipse_switch_workspace.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -89, 0
File ::bilderklein/kleineclipse_systemouterr.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 76, 0
File ::bilderklein/kleineclipse_terminate.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 62, 0
File ::bilderklein/kleineclipse_workbench_launcher.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -88, 0
File ::bilderklein/kleinenableasserteclipse.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 60, 1, -6, 0
File ::bilderklein/kleinenumerationiteratoruml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 84, 0
File ::bilderklein/kleinenumuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 56, 1, -6, 0
File ::bilderklein/kleinexceptionsuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -96, 0
File ::bilderklein/kleinexceptionthrowableerroruml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -16, 0, -6, 0
File ::bilderklein/kleinexecutorexectorservice.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 62, 1, -6, 0
File ::bilderklein/kleinexecutorsuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -39, 0
File ::bilderklein/kleinfilefilteruml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, 49, 0
File ::bilderklein/kleinfileinputstreamfileoutputstreamuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -20, 0, -6, 0
File ::bilderklein/kleinfileuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -89, 0, -6, 0
File ::bilderklein/kleinfilteruml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -88, 0
File ::bilderklein/kleinflowlayoutdemo.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -16, 0, 88, 0
File ::bilderklein/kleinfontmetrics.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -51, 0, 102, 0
File ::bilderklein/kleinfontmetricsuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -21, 0, -6, 0
File ::bilderklein/kleinfontuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 110, 0, -6, 0
File ::bilderklein/kleinFrisianGreeter.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -92, 0, -64, 0
File ::bilderklein/kleingallogo.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -99, 0, 66, 0
File ::bilderklein/kleingameobjectplayerroom.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -73, 0, -86, 0
File ::bilderklein/kleingameutils.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, -115, 0, 53, 0
File ::bilderklein/kleingarageroomgameobjecttostring.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 108, 0, -6, 0
File ::bilderklein/kleingeneralpathuml.gif
first 10 bytes are: 71, 73, 70, 56, 57, 97, 94, 1, -63, 0
java.lang.IllegalArgumentException
	at java.util.zip.ZipInputStream.getUTF8String(Unknown Source)
	at java.util.zip.ZipInputStream.getFileName(Unknown Source)
	at java.util.zip.ZipInputStream.readLOC(Unknown Source)
	at java.util.zip.ZipInputStream.getNextEntry(Unknown Source)
	at zip.ReadZipFiles.readZipFiles(ReadZipFiles.java:27)
	at zip.ReadZipFiles.main(ReadZipFiles.java:14)

Er hängt sich da an einem Umlaut im Namen auf, wie man sieht. Die nächste Datei wäre nämlich bilderklein\kleingeschäftsprozess.gif.
 
Zuletzt bearbeitet:
"Funktioniert nicht" is keine Fehlerbeschreibung!

Auf den ersten Blick schaut der Code eigentlich aus als sollte er funktionieren. Aber es wird hier kaum jemand den Code jetz hier kopieren und dann selbst ausprobieren was du wohl eventuell gemeint haben könntest.

Drück dich klar aus, dann kann man auch helfen.

Hi HoaX, Ich habe den Code neu geschrieben und dann beschreibe ich die genaue Fehlermeldung.

Doch, hier! Da der Code vom genannten Link stammt und extrem grausig ist

- Klassenname klein
- zweimal Exceptions abgefangen
- Dinge definiert die man nicht braucht
- Deklaration und Definition ohne Sinn auseinander gezogen
- File verwendet und inhaltlich falsche Schlüsse gezogen um auf Verzeichnis zu testen, obwohl dies viel eleganter geht
- Verwendete Klasse seltsam benutzt
- Tut nicht das, was drüber steht
...

hab ich ihn mal etwas umgewurstet:

Hi Crian, du hast recht, der Code ist wirklich grausig. Deine korrigierte Code funktioniert gut, aber leider möchte ich arbeiten mit RandomAccessFile. Ich habe den Code auch neue geschrieben:

Der TestZip Datei habe ich hier hoch geladen: http://www.phoenix-eyes.com/Diplom/aaabbb.zip

Java:
package zipTest;

import java.io.*;
import java.util.zip.*;
 
class  readZipFiles 
{
    public static void main(String[] args) 
    {
    	
    	String inputzipFile = "/home/tomatoKiller/Output/zipDatei/aaabbb.zip";
    	
        try
        {
            String filename = inputzipFile;
            readZipFiles list = new readZipFiles( );
            list.read(filename);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
 
    public void read(String filename) throws Exception
    {
            ZipInputStream zipinputstream = null;
            ZipEntry zipentry;
            zipinputstream = new ZipInputStream(
                 new FileInputStream(filename));
 
            zipentry = zipinputstream.getNextEntry();
            while (zipentry != null) 
            { 
                //for each entry to be extracted
                String entryName = zipentry.getName();
                System.out.println("File ::"+entryName);
                RandomAccessFile  rf;
                File newFile = new File(entryName);
                String directory = newFile.getParent();
 
                if(directory == null)
                {
                    if(newFile.isDirectory())
                        break;
                }
 
                rf = new RandomAccessFile(entryName,"r");               
                String line;
 
                if ((line =rf.readLine()) !=null)
                {
                    System.out.println(line);
                }
 
                rf.close(); 
                zipinputstream.closeEntry();
                zipentry = zipinputstream.getNextEntry();
 
            }//while
 
            zipinputstream.close();
    }
}

Fehler Meldung:

java.io.FileNotFoundException: aaa.txt (No such file or directory)
at java.io.RandomAccessFile.open(Native Method)
at java.io.RandomAccessFile.<init>(RandomAccessFile.java:233)
at java.io.RandomAccessFile.<init>(RandomAccessFile.java:118)
at zipTest.readZipFiles.read(readZipFiles.java:48)

Also, in Zeile 48, entryName = "aaa.txt", und RandomAccessFile versucht allein mit dem "aaa.txt" zu initialisieren. Das ist unmöglich! Deshalb möchte ich jetzt fragen, wie kann man RandomAccessFile richtig in Zip Datei verwenden? Dieses Beispiel scheint nicht so logisch für mich... :-/
 
Zuletzt bearbeitet:
Der Parameter "r" sagt, dass du lesend auf "entryName" zugreiffen willst. Aber "entryname" ist ja im Zipfile, und nicht auf der Festplatte... das macht wenig Sinn. Überhaupt macht das RandomAccessFile wenig Sinn: damit kannst du auf Dateien zugreiffen die auf der Festplatte rumlungern, aber mit dem Inhalt einer ZIP-Datei hat das IMHO überhaupt garnichts zu tun.
Java:
new RandomAccessFile(entryName,"r");
 
Der Parameter "r" sagt, dass du lesend auf "entryName" zugreiffen willst. Aber "entryname" ist ja im Zipfile, und nicht auf der Festplatte... das macht wenig Sinn
Ja, sowas in der Art wollte ich auch gerade sagen.
Ich denke auch nicht, dass Du damit direkt aus dem Zipfile lesen kannst!

Schau Dir mal die API für .../util/zip an(Java Platform SE 6), da gibt es wohl einige bessere Möglichkeiten !

gruß
KLaus
 
Beni hat gesagt.:
Der Parameter "r" sagt, dass du lesend auf "entryName" zugreiffen willst. Aber "entryname" ist ja im Zipfile, und nicht auf der Festplatte... das macht wenig Sinn

Hi Beni und VfL_Freak, ich denke auch gerade so. Aber ich habe im Internet einige Beispiele gesehen, alle macht so eine Unsinn. Besonders ist ein Beispiel von "java2s.com" genau so, schau mal hier:

Read files within a zip file : Zip Tar FileFile Input OutputJava

Aber ich möchte wirklich RandomAccessFile eine Zip Datei lesen können. Ich bin jetzt verzweifelt, ob das wirklich geht.
 
Zuletzt bearbeitet:
Mit RandomAccessFile wirst du nicht direkt aus einer ZIP-Datei lesen können. Du müsstest den entsprechenden Inhalt zurovr dekomprimieren und in eine (temporäre) Datei auf der Festplatte schreiben. Einen anderen Weg kann ich mir derzeit nicht vorstellen. Die Arbeitsweise des Beispiels von java2s.com kann ich nicht nachvollziehen.
Wieso muss es eigentlich unbedingt RandomAccessFile sein?
 
Zuletzt bearbeitet von einem Moderator:
Wieso muss es eigentlich unbedingt RandomAccessFile sein?

Weil ich eine ziemlich groß Datei habe, sie ist c.a. 3 GB, im Zip Format ist aber nur 1.5 GB, das spart viele Platz. Wenn ich mit RandomAccessFile die Datei lesen kann, wäre sehr schön für mich, weil ich oft hin und her in Datei springen kann. Wenn ich andere InputStream benutze, dann kann ich nur nach vorne skip aber nicht rückwärts. Aber vielleicht entpacke ich den Text in einen temporäre Ordner, und wird dass gut funktionieren. Vielen Dank für den Tip! 😀


VfL_Freak hat gesagt.:
Richtig - und nicht jeder Codeschnipsel im Web muss auch richtig sein
Aber so viele Codeschnipsels im Internet machen den geliche Fehler, und niemand hat darüber bschwert, ist auch ein bisschen seltsam... 😀

VfL_Freak hat gesagt.:
habe just noch mal schnell nach "Java ZIP datei auslesen" gegoggled und dies hier gefunden:
Lesen und Schreiben von .zip-Dateien
Vielen Dank! Das ist echt hilfreich! 😀
 
VfL_Freak hat gesagt.:
Richtig - und nicht jeder Codeschnipsel im Web muss auch richtig sein
Aber so viele Codeschnipsels im Internet machen den geliche Fehler, und niemand hat darüber bschwert, ist auch ein bisschen seltsam... 😀
Das beweist doch wunderbar, wie jeder dem anderen hirnlos abschreibt... und wiesehr sich niemand für abgeschriebens interessiert 😛

Der ZipInputStream entzippt die Datei zwar, aber a) im RAM, und b) nur gerade die Stelle die man anschaut. Du könntest aber zuerst deine grosse Datei auslesen, auf die Festplatte schreiben, und *dann* mit einem RandomAccessFile auslesen.
 

Neue Themen


Zurück
Oben