String Komprimieren
-
Ist es möglich mit Java bordmitteln einen String zu komprimieren, über java.util.zip o.ä. so dass dieser in eine textdatei geschreiben werden kann, Anschließend soll der komprimierte String wieder ausgelesen werden aus der textdatei und decomprimiert werden.
Wichtig der String muss in eine textdatei geschrieben werden, und als text ausgelesen werden können.
Wäre echt dankbar für jede hilfe.greetz
JavaKomprimierer
-
Was für ein zufall ich habe auch mal das Problem in ähnlicher Form.
veruch es mal mit den beiden methoden hier
public void writeStringToFile(String str, String fileName) throws IOException{ FileOutputStream fileout = new FileOutputStream(new File(fileName)); ZipOutputStream zipOut = new ZipOutputStream(fileout); zipOut.putNextEntry(new ZipEntry("Daten")); zipOut.write(str.getBytes()); byteOutput.close(); zipOut.close(); }
public String readStringFromFile(String fileName) throws IOException{ byteOutput = new ByteArrayOutputStream(); FileInputStream fileIn = new FileInputStream(new File(fileName)); ZipInputStream zipIn = new ZipInputStream(fileIn); zipIn.getNextEntry(); int l = 0; byte[] buf = new byte[1024]; while ( (l = zipIn.read(buf, 0, buf.length)) != -1) { byteOutput.write(buf, 0, l); } return new String(byteOutput.toByteArray()); }
Bye
-
Wenn es nur um einzelne Strings geht, wäre ein GZIPOutputStream wohl besser als ein ZipOutputStream, da letzteres einen gewissen Overhead enthält. Da eine Zip Datei mehrere Dateien enthalten kannn, wird da auch noch eine Verzeichnisstruktur usw. mitgespeichert, was man bei gzip halt nicht hat.
Was meinst du mit Textdatei?
Sollen die Daten so geschrieben werden, dass nur darstellbare Zeichen verwendet werden? Also nur Buchstaben, Zahlen, -, +, usw.?
Dann könnest du eine Base64 Kodierung verwenden. Die wird auch für email Anhänge benutzt.
Es gibt da die Klassen sun.misc.BASE64Encoder und sun.misc.BASE64Decoder, aber die sind nicht dokumentiert und nicht in jeder JVM enthalten.Also machst du das am besten selbst. Dazu liest du jeweils 3 Byte ein. Das sind dann 24bit. Die teilst du in 4 6er Gruppen, die du dann in 4 Zeichen wandelst.
-
kenn mich zwar nicht so aus, aber unter http://jakarta.apache.org/commons/codec/apidocs/org/apache/commons/codec/binary/Base64.html findet man glaube ich solch eine api, mit welcher man base64 (en)codieren kann, ohne sich noch selbst was coden zu müssen