Estoy tratando de implementar el programa para comprimir y descomprimir un archivo. Todo lo que quiero hacer es comprimir un archivo (fileName.fileExtension) con el nombre fileName.zip y al descomprimir, volver a cambiarlo a fileName.fileExtension. ¿Alguien puede decirme una manera de hacer esto?Cómo cambiar la extensión de archivo en tiempo de ejecución
Respuesta
intento con:
File file = new File("fileName.zip"); // handler to your ZIP file
File file2 = new File("fileName.fileExtension"); // destination dir of your file
boolean success = file.renameTo(file2);
if (success) {
// File has been renamed
}
Ésta es la forma en que solía cambiar el nombre de archivos o cambiar su extensión.
public static void modify(File file)
{
int index = file.getName().indexOf(".");
//print filename
//System.out.println(file.getName().substring(0, index));
//print extension
//System.out.println(file.getName().substring(index));
String ext = file.getName().substring(index);
//use file.renameTo() to rename the file
file.renameTo(new File("Newname"+ext));
}
edición: Método de John cambia el nombre del archivo (manteniendo la extensión). Para cambiar la extensión hacer:
public static File changeExtension(File f, String newExtension) {
int i = f.getName().lastIndexOf('.');
String name = f.getName().substring(0,i);
return new File(f.getParent() + "/" + name + newExtension);
}
Esto sólo cambios la última extensión a un nombre de archivo, es decir, la parte de .gz
archive.tar.gz
. Por lo tanto, funciona bien con archivos ocultos de Linux, cuyo nombre comienza con .
Esto es bastante seguro porque si getParent()
devuelve null
(es decir, en el caso de que el elemento primario sea la raíz del sistema) se "lanza" a una cadena vacía como todo el argumento para el constructor Archivo se evalúa primero.
El único caso en el que obtendrá una salida graciosa es si pasa un Archivo que representa la raíz del sistema en sí, en cuyo caso el null
se antepone al resto de la cadena de ruta.
Hola John. El mismo enfoque que estoy usando actualmente. Lo que quiero hacer es usar por separado la funcionalidad de cremallera y descomprimidor. En ese caso, no tendré la extensión del archivo. – rahul0789
indexOf no funciona. Pruebe lastIndexOf() en su lugar. Eso es porque solo el texto después del último "." es la extensión y un archivo puede tener múltiples "." caracteres. Además, la búsqueda desde el final es, por lo general, más rápida para encontrar esa extensión – brunoais
Haría dos cambios: a) nombre newExtension como newExtensionWithDot b) return new File (f.getParent(), name + newExtension); // "/" solo es compatible con Unix, por lo que el código se puede usar en cualquier lugar. – BitLauncher
FilenameUtils.getFullPathNoEndSeparator(doc.getDocLoc()) + "/" +
FilenameUtils.getBaseName(doc.getDocLoc()) + ".xml"
Me gustaría comprobar, si el archivo tiene una extensión antes de cambiar. La solución a continuación funciona también con los archivos sin extensión o múltiples extensiones
public File changeExtension(File file, String extension) {
String filename = file.getName();
if (filename.contains(".")) {
filename = filename.substring(0, filename.lastIndexOf('.'));
}
filename += "." + extension;
file.renameTo(new File(file.getParentFile(), filename));
return file;
}
@Test
public void test() {
assertThat(changeExtension(new File("C:/a/aaa.bbb.ccc"), "txt"),
is(new File("C:/a/aaa.bbb.txt")));
assertThat(changeExtension(new File("C:/a/test"), "txt"),
is(new File("C:/a/test.txt")));
}
- 1. ¿Cómo cambiar CurrentCulture en tiempo de ejecución?
- 2. Cambiar la orientación en tiempo de ejecución
- 3. ¿Cómo cambiar AndroidManifest en tiempo de ejecución?
- 4. WPF: Cómo cambiar la CurrentUICulture en tiempo de ejecución
- 5. Cambiar fuente en tiempo de ejecución
- 6. cómo cambiar los errores de tiempo de ejecución en inglés
- 7. Cambiar la configuración regional en tiempo de ejecución en Swing
- 8. ¿Cómo puedo cambiar la extensión de archivo con javascript
- 9. Cómo cambiar sql_mode en el tiempo de ejecución
- 10. ¿Cambiar dirección/puerto de WSDL EndPointAddress en tiempo de ejecución?
- 11. ¿Es posible cambiar app.config en tiempo de ejecución?
- 12. Cómo cambiar la ubicación de la página en tiempo de ejecución
- 13. Cambiar el tamaño de popup.html en la extensión de Chrome
- 14. Android - Cambiar diseño de fragmento en tiempo de ejecución
- 15. Cambiar el título de MenuItem en tiempo de ejecución
- 16. EF 5 Cambiar cadena de conexión en tiempo de ejecución
- 17. Cambiar barra de aplicaciones buttonicon en tiempo de ejecución
- 18. Cómo cargar un archivo jar en el tiempo de ejecución
- 19. Cambiar el idioma de NSLocalizedString() en tiempo de ejecución
- 20. Android: cambiar el color de forma en tiempo de ejecución
- 21. Cómo modificar el archivo strings.xml en tiempo de ejecución
- 22. cómo actualizar la sección assemblyBinding en el archivo config en tiempo de ejecución?
- 23. Cambiando la extensión de archivo en Python
- 24. ¿Cómo cambiar la extensión de archivo PHP usando el archivo .htaccess en GoDaddy Linux Hosting?
- 25. ¿Cómo cambiar la configuración extraParams de un proxy en tiempo de ejecución en extjs?
- 26. Cómo cambiar el idioma en tiempo de ejecución sin problemas de diseño
- 27. Localización en tiempo de ejecución
- 28. Android cómo cambiar el idioma de la aplicación en tiempo de ejecución
- 29. ¿Cómo cambiar dinámicamente la clase base de instancias en tiempo de ejecución?
- 30. Cambiar el orden de carga de la biblioteca en tiempo de ejecución (como LD_PRELOAD pero durante la ejecución)
comprobar Apache API para io, [FilenameUtils] (http://commons.apache.org/io/api-1.4/org/apache/commons/ io/FilenameUtils.html) –
Comenzaría leyendo [File.renameTo] (http://docs.oracle.com/javase/7/docs/api/java/io/File.html#renameTo (java.io) .File)) – MadProgrammer
@Nandkumar: Gracias, creo que será útil para mí. Pero el problema parece ser que puedo descomprimir el archivo en cualquier momento más tarde (puede estar en otra sesión). ¿Cómo preservar su extensión anterior? – rahul0789