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();
        }
    }
}
 

HoaX

Top Contributor
...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.
 

Crian

Top Contributor
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:

fatfox

Bekanntes Mitglied
"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:
B

Beni

Gast
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");
 

VfL_Freak

Top Contributor
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
 

fatfox

Bekanntes Mitglied
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:
G

Gastredner

Gast
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:

fatfox

Bekanntes Mitglied
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! :D


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... :D

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! :D
 
B

Beni

Gast
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... :D
Das beweist doch wunderbar, wie jeder dem anderen hirnlos abschreibt... und wiesehr sich niemand für abgeschriebens interessiert :p

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.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M RandomAccessFile int und String gleichzeitig in einer Datei Java Basics - Anfänger-Themen 49
T RandomAccessFile - Wie schreibe ich etwas in eine txt Datei? Java Basics - Anfänger-Themen 5
P Datei mit RandomAccessFile einlesen Java Basics - Anfänger-Themen 14
N RandomAccessFile(File, String) erstellt datei?! Java Basics - Anfänger-Themen 6
N Randomaccessfile Java Basics - Anfänger-Themen 2
G Wie gebe ich einen Dateipfad in RandomAccessFile an? Java Basics - Anfänger-Themen 2
S TextArea, RandomAccessFile, Apend und andere Tricks... Java Basics - Anfänger-Themen 7
R RandomAccessFile verständnis Problem Java Basics - Anfänger-Themen 10
D RandomAccessFile Java Basics - Anfänger-Themen 2
P RandomAccessFile writeInt() und writeChar() Java Basics - Anfänger-Themen 3
L RandomAccessFile liest nicht alle Zeichen Java Basics - Anfänger-Themen 3
D Erste Schritte RandomAccessFile "Leerzeichen" löschen Java Basics - Anfänger-Themen 6
B Klassen RandomAccessFile Java Basics - Anfänger-Themen 7
B Collections RandomAccessfile & Linkedlist Java Basics - Anfänger-Themen 4
M Frage zur Klasse RandomAccessFile Java Basics - Anfänger-Themen 8
cosmic Frage zu der RandomAccessFile Klasse Java Basics - Anfänger-Themen 6
K RandomAccessFile Java Basics - Anfänger-Themen 4
C RandomAccessFile vs. Streams Java Basics - Anfänger-Themen 5
D text dateien mit RandomAccessFile manipulieren Java Basics - Anfänger-Themen 6
T RandomAccessFile und der Dateipfad Java Basics - Anfänger-Themen 2
J RandomAccessFile löschen Java Basics - Anfänger-Themen 2
M RandomAccessFile Java Basics - Anfänger-Themen 3
G RandomAccessFile, FileChannel, MappedByteBuffer Java Basics - Anfänger-Themen 12
M RandomAccessFile schreibt Sonderzeichen vor String Java Basics - Anfänger-Themen 2
R RandomAccessFile mit anderen Streams verbinden Java Basics - Anfänger-Themen 5
J File, RandomAccessFile File wird größer Java Basics - Anfänger-Themen 8
J RandomAccessFile schreibt falsch Java Basics - Anfänger-Themen 2
G RandomAccessFile Java Basics - Anfänger-Themen 20
R RandomAccessFile Java Basics - Anfänger-Themen 4
R RandomAccessFile und ObjectoutputStream Java Basics - Anfänger-Themen 2
T RandomAccessFile erzeugt seltsame Zeichen Java Basics - Anfänger-Themen 2
P RandomAccessFile Java Basics - Anfänger-Themen 2
L RandomAccessFile und readChar readByte Java Basics - Anfänger-Themen 2
D konvertierungsprobleme bei RandomAccessFile Java Basics - Anfänger-Themen 4
L RandomAccessFile - Prob Java Basics - Anfänger-Themen 4
B RandomAccessFile Java Basics - Anfänger-Themen 12
M RandomAccessFile liest nur jeden zweiten Wert aus! Java Basics - Anfänger-Themen 8
G RandomAccessFile Java Basics - Anfänger-Themen 2
O RandomAccessFile komisch zeichen Java Basics - Anfänger-Themen 7
A RandomAccessFile Java Basics - Anfänger-Themen 7
B String in ein RandomAccessFile einfügen (bestimmte Position) Java Basics - Anfänger-Themen 4
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
E Audio Datei unter Bedingungen ausführen Java Basics - Anfänger-Themen 19
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
A exe Datei erstellen Java Basics - Anfänger-Themen 8
J .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
P Aus Text Datei nur Zahlen übernehmen Java Basics - Anfänger-Themen 13
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
W Fehler in der Datei pom.xml Java Basics - Anfänger-Themen 19
M Verständnisfrage: Warum wird die Datei ohne Inhalt übertragen Java Basics - Anfänger-Themen 3
D Jar Datei startet unter Linux nicht Java Basics - Anfänger-Themen 3
P Probleme mit NetBeans: Wie lässt sich jar. Datei an einem MacBook öffnen Java Basics - Anfänger-Themen 21
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
D Java Programm mit Batch-Datei starten Java Basics - Anfänger-Themen 32
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
E TIF Datei auslesen Java Basics - Anfänger-Themen 2
B von Java/Eclipse verwendete Datei existiert gar nicht? Java Basics - Anfänger-Themen 6
M Spezifischen Wert einer Zeile aus .txt Datei entnehmen Java Basics - Anfänger-Themen 15
B Popups mit Klicksabfangen zumAusfüllen einer .ods Datei Java Basics - Anfänger-Themen 0
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
I Datei (Bild) Drucken und wie Druckeinstellung speichern? Java Basics - Anfänger-Themen 3
A CSV-Datei Verarbeiten Java Basics - Anfänger-Themen 8
D Downloadfortschritt von Datei über Google Drive API v3 Java Basics - Anfänger-Themen 10
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
B Den Dateipfad einer Java Datei durch Code in Selbiger finden? Java Basics - Anfänger-Themen 10
S In Datei schreiben in Java? Java Basics - Anfänger-Themen 1
Saiko Zeilen einer Datei einlesen Java Basics - Anfänger-Themen 3
sserio TXT-Datei Auslesen und den Wert jedes Namen ausrechnen etc. Java Basics - Anfänger-Themen 37
sserio Txt Datei einlesen Java Basics - Anfänger-Themen 9
T Printwriter Datei nicht überschreiben Java Basics - Anfänger-Themen 10
berserkerdq2 An selbst ersteller txt Datei immer Text dranhängen, ohne den vorherign Text zu löschen Java Basics - Anfänger-Themen 8
berserkerdq2 Wie gebe ich den Pfad zu einer Datei an, die in einem Ordner in Eclipse ist? Java Basics - Anfänger-Themen 1
D Strings aus Excel-Datei einlesen Java Basics - Anfänger-Themen 2
M Text in Datei schreiben Java Basics - Anfänger-Themen 9
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
J selbst erstellte Datei mit Programm öffnen Java Basics - Anfänger-Themen 10
J int innerhalb einer Datei ändern Java Basics - Anfänger-Themen 1
T208 Text Datei individuell benennen. Java Basics - Anfänger-Themen 5
julian112 Input/Output .gz bzw. .txt Datei Einlesen und Umgang mit Exceptions Java Basics - Anfänger-Themen 1
F Aus eingelesener Datei korrekt Objekte erzeugen Java Basics - Anfänger-Themen 5
E extern Datei von meinem Computer aufmachen Java Basics - Anfänger-Themen 5
H Scripte oder Programmcode aus Datei lesen? Java Basics - Anfänger-Themen 5
E PDF Datei im xfdf-Datei umwandeln und auf dem Laufwerk ablegen Java Basics - Anfänger-Themen 0
J CSV-Datei verarbeiten Java Basics - Anfänger-Themen 27
A Verarbeiten einer Excel Datei durch das java-Programm Java Basics - Anfänger-Themen 3
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
nbergmann Installation unter jdk.java.net: Keine ZIP-Datei zum entpacken Java Basics - Anfänger-Themen 2
J Datei aus Netzwerk auslesen Java Basics - Anfänger-Themen 9
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
EchtKeineAhnungManchmal Controller aus FXML Datei entfernen Java Basics - Anfänger-Themen 49
I Probleme mit OutputStream - Datei lässt sich nicht öffnen Java Basics - Anfänger-Themen 4
Kotelettklopfer Sqlite DB aus Java Datei ansprechen. Java Basics - Anfänger-Themen 147
C XML Datei speichern und laden Java Basics - Anfänger-Themen 18
M Von einem Menü Methode aus anderer Klasse ausführen, die errechnete Werte in Datei schreibt. Java Basics - Anfänger-Themen 8
C XML Datei schreiben Java Basics - Anfänger-Themen 14
S Zufällige ungerade Zeile aus Text-Datei lesen Java Basics - Anfänger-Themen 5
J Wert in einer json Datei ändern und speichern Java Basics - Anfänger-Themen 3
L Java erstellt leere Datei Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben