![]() |
|
|
|||||||
| Allgemeine Java-Themen Allgemeine Themen, die nicht in andere Fachforen und nicht zu den Java Basics passen |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #1 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 13.03.2004
Fachbeiträge: 216
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Hio. Ich entwickel gerade ein kleines Archivierprogramm. Es geht auch alles bestens nur kann ich nicht „richtig“ auf die ZipEntrys im Zip-Archiv zugreifen. D.h. ich kann schon den Namen auslesen, aber das war's dann auch schon. Muss man den das Archiv immer komplett entpacken, um auf die Dateien zuzugreifen. Ich brauche so Informationen wie z.B. das Icon der Datei oder die echte, sowie die komprimierte Größe (wenn ich zipEntry.getSize() mache kommt nämlich nur -1 zurück)...
Dann hab ich noch eine zweites Problem mit Zip-Archiven: Angenommen es liegt bereits ein Zip-Archiv auf der Festplatte. Jetzt möchte der Benutzer dieses Archiv erweitern. Den Code den ich dazu verwende funktioniert auch bestens, aber nur so lange bis ich am Level des ZipOutputStreams rumspiele... Es gibt dann nämlich immer eine ZipException die mir z.B. Sagt: Code:
invalid entry compressed size (expected 2364329 but got 1051243 bytes) Hier mein Code: Code:
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outputFile));
out.setComment(this.comment);
//out.setLevel(10); //das ergibt die Exception
ArrayList<String> archiveTable = new ArrayList<String>();
if(inputFile.exists())
{
ZipFile zipFile = new ZipFile(inputFile);
Enumeration enu = zipFile.entries();
while(enu.hasMoreElements())
{
ZipEntry ent = (ZipEntry) enu.nextElement();
archiveTable.add(ent.getName());
InputStream in = zipFile.getInputStream(ent);
out.putNextEntry(ent);
this.setCurrent("Archiviere: " + ent.getName());
while((len = in.read(BUFFER)) > 0)
{
out.write(BUFFER, 0 , len);
}
in.close();
out.closeEntry();
}
zipFile.close();
}
//HashMap enthält die Dateien
Iterator it = filesHashmap.keySet().iterator();
while (it.hasNext())
{
String fileKey = it.next().toString();
String filePath = filesHashmap.get(fileKey).toString();
File file = new File(filePath);
InputStream in = new FileInputStream(file);
ZipEntry zipEntry = new ZipEntry(fileKey);
out.putNextEntry(zipEntry);
len = 0;
while ((len = in.read(BUFFER)) > 0)
{
out.write(BUFFER, 0, len);
}
in.close();
out.closeEntry();
if(this.deletFilesOnExit)
{
file.delete();
}
}
out.close();
inputFile.delete();
outputFile.renameTo(new File(this.archiveOutputPath));
cu luma |
|
|
| #4 (permalink) | |
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 13.03.2004
Fachbeiträge: 216
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
|
Öhhrm kann mir vielleicht jemand sagen, wie man das Kompressionslevel eines Archivs herrausfindet? Ich hab nämlich das Problem gefunden: Das neue Archiv muss genau das gleiche Level haben wie das alten, von dem die Dateien kommen. Nur wie findet man dieses herraus??
|
|
|
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| auslesen von informationen aus seitenquelltext | DownHill | Java Basics - Anfänger-Themen | 6 | 10.12.2008 13:19 |
| Informationen der Netzwerkkarte auslesen | gladiator09 | Netzwerkprogrammierung | 1 | 19.03.2008 20:37 |
| informationen aus tabelle auslesen | fritzy | Allgemeines EE | 1 | 22.09.2006 08:04 |
| Auslesen von Informationen aus Textdateien | cowabunga1984 | Java Basics - Anfänger-Themen | 2 | 16.05.2006 12:13 |
| datei informationen auslesen | murphy | Allgemeine Java-Themen | 16 | 06.01.2006 15:44 |
| Lesezeichen |
|
|