Wie kann ich die Archivierung mehrerer Dateien in eine .zip-Datei mit scala?
Könnte mir jemand die post-ein einfaches snippet, das dies tut?
Dateien sind text-Dateien, so dass die Kompression wäre schön, anstatt nur Archiv-Dateien.
Habe ich die Dateinamen werden in ein durchsuchbar.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es derzeit nicht irgendeine Möglichkeit, das zu tun diese Art der Sache von der standard-Scala-Bibliothek, aber es ist ziemlich einfach zu bedienen
java.util.zip
:Ich bin mit Schwerpunkt auf Einfachheit statt auf Effizienz (keine Fehlerprüfung und-Lesen und schreiben von einem byte zu einem Zeitpunkt, der nicht ideal), aber es funktioniert, und kann sehr leicht verbessert werden.
zip.write(b)
.in
undzip
imfinally
Blöcke.Stream.continually(in.read()).takeWhile(_ > -1).foreach { b => zip.write(b) }
Ich hatte vor kurzem die Arbeit mit zip-Dateien zu und fand diese sehr schönes Tool: https://github.com/zeroturnaround/zt-zip
Hier ist ein Beispiel, komprimieren Sie alle Dateien in einem Verzeichnis:
Sehr bequem.
Den Travis Antwort ist richtig, aber ich habe Zwickte ein wenig, um eine schnellere version seines code:
Dies ist ein wenig mehr scala-Stil in Fall, dass Sie wie funktional:
und nicht zu vergessen die Importe:
readByte(in).takeWhile(_ > -1).toList
verbraucht viel Speicher während des Lesens große Datei. MitIterator
besser sein könnte.def readByte(bufferedReader: BufferedReader) = Stream.continually(bufferedReader.read())
Etwas geändert (kürzere) version mit NIO2:
Vorgeschlagen von Gabriele Petronella, zusätzlich brauchen, um hinzuzufügen, unter maven-dependency in pom.xml wie gut und unter Importe