Come zip e decomprimere i file che sono tutti già in DDMS: data/data/mypackage/files/
Ho bisogno di un semplice esempio per quello. Ho già cercato relativo a zip e decomprimere. Ma, nessun esempio disponibile per me. Qualcuno può dire qualche esempio. Advance Grazie.Come comprimere e decomprimere i file?
risposta
Dai un'occhiata a java.util.zip. * Classi per funzionalità zip. Ho fatto un semplice codice zip/unzip, che ho incollato qui sotto. Spero che sia d'aiuto.
public static void zip(String[] files, String zipFile) throws IOException {
BufferedInputStream origin = null;
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile)));
try {
byte data[] = new byte[BUFFER_SIZE];
for (int i = 0; i < files.length; i++) {
FileInputStream fi = new FileInputStream(files[i]);
origin = new BufferedInputStream(fi, BUFFER_SIZE);
try {
ZipEntry entry = new ZipEntry(files[i].substring(files[i].lastIndexOf("/") + 1));
out.putNextEntry(entry);
int count;
while ((count = origin.read(data, 0, BUFFER_SIZE)) != -1) {
out.write(data, 0, count);
}
}
finally {
origin.close();
}
}
}
finally {
out.close();
}
}
public static void unzip(String zipFile, String location) throws IOException {
try {
File f = new File(location);
if(!f.isDirectory()) {
f.mkdirs();
}
ZipInputStream zin = new ZipInputStream(new FileInputStream(zipFile));
try {
ZipEntry ze = null;
while ((ze = zin.getNextEntry()) != null) {
String path = location + ze.getName();
if (ze.isDirectory()) {
File unzipFile = new File(path);
if(!unzipFile.isDirectory()) {
unzipFile.mkdirs();
}
}
else {
FileOutputStream fout = new FileOutputStream(path, false);
try {
for (int c = zin.read(); c != -1; c = zin.read()) {
fout.write(c);
}
zin.closeEntry();
}
finally {
fout.close();
}
}
}
}
finally {
zin.close();
}
}
catch (Exception e) {
Log.e(TAG, "Unzip exception", e);
}
}
Non funziona per me. Attacca in loop infinito. – usman
Questo è sbagliato: 'Stringa percorso = posizione + ze.getName(); if (ze.isDirectory()) { File unzipFile = new File (percorso); if (! UnzipFile.isDirectory()) { unzipFile.mkdirs(); } } ' – maohieng
quale dovrebbe essere il valore della variabile dimensione del buffer? –
La brianestey funzione zip disponibile funziona bene, ma la funzione di decompressione è molto lenta a causa leggere un byte alla volta. Ecco una versione modificata della sua funzione unzip che utilizza un buffer ed è molto più veloce.
/**
* Unzip a zip file. Will overwrite existing files.
*
* @param zipFile Full path of the zip file you'd like to unzip.
* @param location Full path of the directory you'd like to unzip to (will be created if it doesn't exist).
* @throws IOException
*/
public static void unzip(String zipFile, String location) throws IOException {
int size;
byte[] buffer = new byte[BUFFER_SIZE];
try {
if (!location.endsWith(File.separator)) {
location += File.separator;
}
File f = new File(location);
if(!f.isDirectory()) {
f.mkdirs();
}
ZipInputStream zin = new ZipInputStream(new BufferedInputStream(new FileInputStream(zipFile), BUFFER_SIZE));
try {
ZipEntry ze = null;
while ((ze = zin.getNextEntry()) != null) {
String path = location + ze.getName();
File unzipFile = new File(path);
if (ze.isDirectory()) {
if(!unzipFile.isDirectory()) {
unzipFile.mkdirs();
}
} else {
// check for and create parent directories if they don't exist
File parentDir = unzipFile.getParentFile();
if (null != parentDir) {
if (!parentDir.isDirectory()) {
parentDir.mkdirs();
}
}
// unzip the file
FileOutputStream out = new FileOutputStream(unzipFile, false);
BufferedOutputStream fout = new BufferedOutputStream(out, BUFFER_SIZE);
try {
while ((size = zin.read(buffer, 0, BUFFER_SIZE)) != -1) {
fout.write(buffer, 0, size);
}
zin.closeEntry();
}
finally {
fout.flush();
fout.close();
}
}
}
}
finally {
zin.close();
}
}
catch (Exception e) {
Log.e(TAG, "Unzip exception", e);
}
}
Questa decompressione non ha funzionato per me. Stavo ricevendo errori perché stavo cercando di decomprimere un file prima della sua directory genitore. Nell'istruzione else ho aggiunto una condizione per creare la directory padre se non esiste. Ora funziona. –
@ J-L Grazie per avermelo fatto notare. Ho modificato il codice di conseguenza. – Ben
veloce e funziona gr8, my BUFFER_SIZE = 8192 –
- 1. Come utilizzare l'SDK 7z per comprimere e decomprimere un file
- 2. Comprimere e decomprimere le cartelle in C#
- 3. Comprimere e decomprimere il file 7z in java
- 4. Decomprimere e salvare i file usando as3?
- 5. Come posso generare file e quindi comprimere/comprimere con Heroku?
- 6. Come decomprimere i file ricorsivamente in Java?
- 7. Come [tar e] comprimere i file contrassegnati in Emacs
- 8. Utilizzo di zlib e cPickle per comprimere/decomprimere un dizionario in file
- 9. Come decomprimere e riconfezionare un file WAR
- 10. Come decomprimere/decomprimere in Emacs
- 11. come decomprimere con pigz
- 12. Posso decomprimere e deserializzare un file utilizzando i flussi?
- 13. R: Funzione generica per decomprimere i file
- 14. Come faccio a comprimere i file in Java e non includere i percorsi dei file
- 15. Come posso facilmente comprimere e decomprimere le stringhe su/da matrici di byte?
- 16. comprimere i file più individualmente con Gzip
- 17. scaricare e decomprimere il file in iOS
- 18. Come decomprimere il file tar.Z attraverso i ricettari CHEF
- 19. JavaScript: decomprimere/gonfiare/decomprimere/stringhe ungzip
- 20. Come decomprimere i file in una Heroku Buildpack
- 21. decomprimere un file .zip
- 22. come comprimere e beni minify usando i plugin Jekyll
- 23. Come comprimere i file di registro con NLog
- 24. C# Come comprimere i contenuti .ashx?
- 25. Node.js - Zip/decomprimere una cartella
- 26. Decomprimere NSData senza file temporaneo
- 27. E 'possibile comprimere i file CSS meno con htaccess? (e come?)
- 28. Come comprimere un testo?
- 29. come possiamo decomprimere un file nell'obiettivo c?
- 30. Come decomprimere un file .gz usando C#
dare uno sguardo qui: http://www.jondev.net/articles/Zipping_Files_with_Android_(Programmatically), sulla prima pagina durante la ricerca di "Android come zip file" su Google. – nhaarman