Hallo,
nachdem ich jetzt schon über drei Wochen lang nach einer - eigentlich trivialen - Lösung meines Problemes suche und weder in den verschiedensten JAVA-Foren, sowie Bücher eine Antwort darauf finden konnte, ja mir nicht einmal im Forum auf http://www.javasoft.com einer eine passende Anwtort geben konnte, bin ich ernsthaft am Überlegen, mein Programm in C++ zu schreiben, und damit JAVA den Rücken zu kehren!
Wenn Du weißt, wie ich es lösen könnte, hilf mir bitte! Ich wäre unendlich dankbar!! 
Es besteht folgendes Problem: Ich entzippe mit einer Methode ein Zip-Archiv rekursiv… funktioniert einwandfrei, solange im Namen des Zip-Archives selber oder den gepackten Dateinamen keine Umlaute (äöü) vorkommen. Ist dies der Fall, bekomme ich folgende Fehlermeldung:
Exception in thread „main“ java.lang.IllegalArgumentException
at java.util.zip.ZipInputStream.getUTF8String(Unknown Source)
at java.util.zip.ZipInputStream.readLOC(Unknown Source)
at java.util.zip.ZipInputStream.getNextEntry(Unknown Source)
at mapper.unZip(mapper.java:519)
at mapper.copyDir(mapper.java:228)
at mapper.main(mapper.java:117)
Wenn ich mir das Zipfile ausgeben lasse, dann spuckt JAVA mir an der Konsole ein O mit einer Tilde ~ oben drauf anstatt eines ä aus. Der Charwert beträgt hier -28 anstatt 228 wie es in der Unicode-Tabelle steht. Deshalb funktioniert auch meine zweite Methode nicht, die ByteToChar anwendet, um Unicode zu erhalten.
Ich habe auch schon versucht in einer Schleife die -28 abzufangen und durch 228 (und andere Zeichen entsprechend) zu ersetzen… Fehlanzeige.
Nachfolgend der Code der unZip-Methode:
/** Entpackt ein beliebiges Zip-Archiv rekursiv in angegebenen Pfad
* Archiv darf (noch) keine Umlaute enthalten!
* @param path Pfad zum entzippen
* @param zipfile Name(Pfad) des Zipfiles
* @param delete Gibt an, ob das Zipfile nach dem Entpacken geloescht werden soll
**/
public void unZip(String path, String zipfile, String delete)
{
// Ordner nach ZipFile anlegen
int length = (getName(zipfile)).length();
int cut = length - 4;
String zipfolder = (getName(zipfile)).substring(0, cut);
path = path + „\“ + zipfolder;
mkDir(path);
try
{
// Zip-Datei öffnen
byte[] buf = new byte[4096];
ZipInputStream in = new ZipInputStream(
new FileInputStream(zipfile));
while(true)
{
//Naechsten Zip-Eintrag lesen
ZipEntry entry = in.getNextEntry();
if(entry == null)
break;
System.out.println(„AUSGABE:“ + entry.getName());
// Ordnerstruktur anlegen
if((entry.isDirectory()))
{
File directory = new File(
path + „\“ + entry.getName());
directory.mkdirs();
}
else
{
FileOutputStream out = new FileOutputStream(
path + „\“ + entry.getName());
int len;
while((len = in.read(buf)) > 0)
out.write(buf, 0, len);
out.close();
}
// Zip-Eintrag schliessen
in.closeEntry();
}
in.close();
}
catch(IOException e)
{
System.err.println(e.toString());
}
if(delete.equals(„yes“))
{
System.out.print("\nDeleting…: " + zipfile + „…“);
remove(zipfile);
System.out.print(„OK“);
}
}
Vielen Dank schon mal im Vorraus für die Hilfe!!
Grüsse
Cromo