Cómo comprimir y descomprimir los archivos que ya están en DDMS: data/data/mypackage/files/
Necesito un ejemplo simple para eso. Ya he buscado relacionado a comprimir y descomprimir. Pero, no hay un solo ejemplo disponible para mí. ¿Alguien puede decir algo de ejemplo? Gracias anticipadas.Cómo comprimir y descomprimir los archivos?
Respuesta
Eche un vistazo a las clases java.util.zip. * Para la funcionalidad de zip. He hecho un código zip/descomprimir básico, que he pegado a continuación. Espero eso ayude.
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);
}
}
No funciona para mí. Se pega en un bucle infinito. – usman
Esto está mal: 'String path = location + ze.getName(); if (ze.isDirectory()) { Archivo unzipFile = new File (path); if (! UnzipFile.isDirectory()) { unzipFile.mkdirs(); } } ' – maohieng
¿Cuál debería ser el valor de la variable de tamaño de búfer? –
La función brianestey postal proporcionó funciona bien, pero la función de descompresión es muy lento debido a la lectura de un byte a la vez. Aquí hay una versión modificada de su función de descompresión que utiliza un buffer y es mucho más rápido.
/**
* 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);
}
}
Este descomprimir no funcionó para mí. Recibía errores porque estaba intentando descomprimir un archivo antes de su directorio padre. En la declaración else, agregué una condición para crear el directorio principal si no existe. Ahora eso funciona –
@ J-L Gracias por señalar eso. He editado el código en consecuencia. – Ben
rápido y trabajo gr8, mi BUFFER_SIZE = 8192 –
- 1. Comprimir y descomprimir las carpetas y archivos usando Java
- 2. Comprimir y descomprimir archivo 7z en java
- 3. Comprimir y descomprimir un Stream con Compression.DeflateStream
- 4. ¿Cómo puedo generar archivos y luego comprimir/comprimir con Heroku?
- 5. comprimir y descomprimir cadena con desinfla
- 6. Comprimir y descomprimir carpetas en C#
- 7. ¿Comprimir y descomprimir un archivo programmatically en iphone?
- 8. Comprimir con Java Descomprimir con PHP
- 9. Cómo descomprimir/descomprimir dentro de Emacs
- 10. ¿Cómo comprimir/descomprimir una cadena de consulta larga en PHP?
- 11. Cómo comprimir archivos usando JavaScript
- 12. Cómo descomprimir todos los archivos en todos los subdirectorios en bash
- 13. JavaScript: Descomprimir/inflar/descomprimir/descomprimir cadenas
- 14. Can Delphi JCL 7zCompression se usa para comprimir/descomprimir secuencias en memoria sin operaciones de archivos?
- 15. Uso de zlib ycPickle para comprimir/descomprimir un diccionario en archivos
- 16. Comprimir archivos y carpetas en android
- 17. ¿Cómo puedo comprimir y descomprimir fácilmente cadenas a/desde matrices de bytes?
- 18. Cómo utilizar el SDK 7z para comprimir y descomprimir un archivo
- 19. Cómo [tar y] comprimir archivos marcados en Emacs
- 20. ¿Cómo descomprimir archivos recursivamente en Java?
- 21. Comprimir archivos en pitón
- 22. Comprimir archivos Log4j
- 23. Cómo comprimir archivos de registro con NLog
- 24. Descomprimir archivos tgz usando Ant
- 25. ¿Es posible comprimir MENOS archivos CSS con htaccess? (¿y cómo?)
- 26. Cómo usar el SDK de LZMA para comprimir/descomprimir en Java
- 27. Obtener el tamaño de los datos sin comprimir en zlib?
- 28. ¿Cómo descomprimir xlsx?
- 29. jquery "Minificado" Archivos "sin comprimir"
- 30. Preservar los permisos de archivo, al descomprimir los archivos y pasar con velocidad usando hormiga
Echa un vistazo aquí: http://www.jondev.net/articles/Zipping_Files_with_Android_(Programmatically), en la primera página en la búsqueda de "androide cómo los archivos zip" en Google. – nhaarman