Sto cercando di implementare il programma per comprimere e decomprimere un file. Tutto quello che voglio fare è comprimere un file (fileName.fileExtension) con nome come fileName.zip e in decompressione modificarlo nuovamente in fileName.fileExtension. Qualcuno può dirmi un modo per farlo?Come cambiare l'estensione del file in fase di esecuzione
risposta
Prova 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
}
Questo è il modo che ho usato per rinominare i file o cambiare la sua estensione.
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));
}
modificare: il metodo di Giovanni rinomina il file (mantenendo l'estensione). Per modificare l'estensione fare:
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);
}
Questo solo cambiamenti l'ultima estensione ad un nome di file, vale a dire la parte di .gz
archive.tar.gz
. Quindi funziona bene con i file nascosti di Linux, per i quali il nome inizia con un .
Questo è abbastanza sicuro perché se getParent()
restituisce null
(cioè nel caso in cui il padre sia la root di sistema) è "cast" su una stringa vuota come l'intero argomento del costruttore File viene valutato per primo.
L'unico caso in cui si otterrà un output divertente è se si passa in un file che rappresenta la radice del sistema stesso, nel qual caso il null
viene aggiunto al resto della stringa del percorso.
Ciao John. Lo stesso approccio che sto usando attualmente. Quello che voglio fare è che posso usare separatamente le funzionalità zipper e unzipper. In tal caso non avrò l'estensione del file. – rahul0789
indexOf non funziona. Prova invece lastIndexOf(). Questo perché solo il testo dopo l'ultimo "." è l'estensione e un file può avere più "." personaggi. Inoltre, la ricerca dalla fine è, solitamente, più veloce per trovare quell'estensione – brunoais
Farei due modifiche: a) nome newExtension come newExtensionWithDot b) return new File (f.getParent(), name + newExtension); // "/" è compatibile solo con Unix, quindi il codice può essere utilizzato ovunque. – BitLauncher
FilenameUtils.getFullPathNoEndSeparator(doc.getDocLoc()) + "/" +
FilenameUtils.getBaseName(doc.getDocLoc()) + ".xml"
Vorrei verificare, se il file ha un'estensione prima di cambiare. La soluzione qui di seguito funziona anche con i file senza estensione o più estensioni
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. Cambiare l'orientamento in fase di esecuzione
- 2. Cambiare forma colore del bordo in fase di esecuzione
- 3. Come cambiare lingua in fase di esecuzione in java swing
- 4. Esecuzione del codice java compilato in fase di esecuzione
- 5. JavaFX come cambiare fase
- 6. Modifica del valore di una macro in fase di esecuzione
- 7. Come unire più file PDF (generati in fase di esecuzione)?
- 8. Modifica del colore delle righe JList in fase di esecuzione
- 9. Come cambiare il colore di un bootstrap (twitter) barra di avanzamento in fase di esecuzione
- 10. Come selezionare l'istanza del bean Spring in fase di esecuzione
- 11. javafx cambia css in fase di esecuzione
- 12. Come cambiare lingua in fase di esecuzione senza problemi di layout
- 13. Aggiungere animazione in fase di esecuzione
- 14. Come cambiare parti sub fxml gui in fase di esecuzione con il pulsante Click
- 15. Aggiunta di file a classpath java in fase di esecuzione
- 16. Impostazione del valore enum in fase di esecuzione in C#
- 17. Sostituisci bean in fase di esecuzione
- 18. Caricamento giare in fase di esecuzione
- 19. Aumenta disposizione PySpark in fase di esecuzione
- 20. WPF: Come modificare CurrentUICulture in fase di esecuzione
- 21. multi selezione ctrl + clic del pulsante in fase di esecuzione
- 22. Come fare riferimento all'assemblaggio in mvc in fase di esecuzione
- 23. Rileva versione Python in fase di esecuzione
- 24. scegliere una monade in fase di esecuzione
- 25. C: informazioni del compilatore in fase di esecuzione
- 26. Ottieni binding IIS in fase di esecuzione
- 27. Ridimensionamento dei controlli in fase di esecuzione
- 28. Come caricare l'assembly in fase di esecuzione prima dell'evento AssemblyResolve?
- 29. Modifiche al vtable in fase di esecuzione
- 30. Come modificare il livello slf4j in fase di esecuzione?
controllare Apache API per IO, [FilenameUtils] (http://commons.apache.org/io/api-1.4/org/apache/commons/ io/FilenameUtils.html) –
Vorrei iniziare leggendo [File.renameTo] (http://docs.oracle.com/javase/7/docs/api/java/io/File.html#renameTo (java.io .File)) – MadProgrammer
@Nandkumar: Grazie penso che sarà utile per me. Ma il problema sembra che io possa decomprimere il file in qualsiasi momento successivo (potrebbe essere in un'altra sessione). Come preservare la sua estensione precedente? – rahul0789