Ich versuche, Programm zu implementieren, um eine Datei zip und entpacken. Alles, was ich tun möchte, ist eine Datei (fileName.fileExtension) mit Namen wie fileName.zip zippen und beim Entpacken wieder zu fileName.fileExtension ändern. Kann mir jemand einen Weg sagen, dies zu tun?So ändern Sie die Dateierweiterung zur Laufzeit
Antwort
Versuchen mit:
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
}
Dies ist, wie ich verwendet, um Dateien umzubenennen oder dessen Erweiterung zu ändern.
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));
}
bearbeiten: John Methode benennt die Datei (die Erweiterung zu halten). Um die Erweiterung zu ändern tun:
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);
}
dies nur Änderungen die letzte Erweiterung auf einen Dateinamen, das heißt den .gz
Teil archive.tar.gz
. Daher funktioniert es gut mit versteckten linux Dateien, für die der Name mit .
beginnt. Das ist ziemlich sicher, denn wenn getParent()
null
zurückgibt (dh im Falle, dass das Elternsystem der Systemstamm ist), wird es in einen leeren String umgewandelt Das ganze Argument für den Dateikonstruktor wird zuerst ausgewertet.
Der einzige Fall, in dem Sie eine lustige Ausgabe bekommen, ist, wenn Sie eine Datei übergeben, die den Systemstamm selbst darstellt. In diesem Fall wird null
dem Rest der Pfadzeichenfolge vorangestellt.
Hallo John. Derselbe Ansatz, den ich derzeit verwende. Was ich tun möchte, ist, dass ich den Reißverschluss und die Entzipperfunktion separat benutzen kann. In diesem Fall wird die Datei nicht erweitert. – rahul0789
indexOf funktioniert nicht. Versuchen Sie stattdessen lastIndexOf(). Das ist, weil nur der Text nach dem letzten "." ist die Erweiterung und eine Datei kann mehrere "." Figuren. Außerdem ist die Suche nach dem Ende normalerweise schneller, um die Erweiterung zu finden. – brunoais
Ich würde zwei Änderungen vornehmen: a) Name newExtension als newExtensionWithDot b) neue Datei zurückgeben (f.getParent(), name + newExtension); // "/" ist nur Unix-kompatibel, daher kann der Code überall verwendet werden. – BitLauncher
FilenameUtils.getFullPathNoEndSeparator(doc.getDocLoc()) + "/" +
FilenameUtils.getBaseName(doc.getDocLoc()) + ".xml"
Ich würde prüfen, ob die Datei eine Erweiterung vor dem Ändern hat. Die Lösung unten funktioniert auch mit Dateien ohne Erweiterung oder mehrere Erweiterungen
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. So ändern Sie die Ansicht zur Laufzeit
- 2. So ändern Sie die Dateierweiterung mit jquery
- 3. So ändern Sie die Sprache zur Laufzeit ohne Layout-Probleme
- 4. WPF + PRISM So ändern Sie die Region zur Laufzeit
- 5. So ändern Sie Spring's @Scheduled fixedDelay zur Laufzeit
- 6. So ändern Sie das aktuelle Design zur Laufzeit in Android
- 7. So ändern Sie den Speicherort der Seite zur Laufzeit
- 8. Android, wie die Anwendungssprache zur Laufzeit ändern
- 9. Schriftart ändern zur Laufzeit
- 10. Ändern Sie das Gebietsschema zur Laufzeit?
- 11. ändern Etikettenposition zur Laufzeit
- 12. So stellen Sie die Sprache des iPhone zur Laufzeit ein
- 13. Ändern Sie das Thema zur Laufzeit
- 14. C++ Ressourcen zur Laufzeit ändern
- 15. So erstellen Sie multi_array :: index_gen zur Laufzeit
- 16. ändern UIButton Klasse zur Laufzeit
- 17. Ändern von Code zur Laufzeit
- 18. So verwalten Sie mehrere pageIndicator zur Laufzeit
- 19. Ändern Sie die Höhe von UITableViewHeaderFooterView zur Laufzeit
- 20. Ändern von App.config zur Laufzeit
- 21. JVM-Flags zur Laufzeit ändern
- 22. Ändern von LSApplicationQueriesSchemes zur Laufzeit
- 23. Ändern Anwendungsleiste Buttonicon zur Laufzeit
- 24. Ändern der Datensatzverbindungszeichenfolge zur Laufzeit
- 25. Ändern injizierten Objekt zur Laufzeit
- 26. So erhalten Sie die haxe Compiler-Version zur Laufzeit
- 27. So legen Sie die Rahmenfarbe von UIView zur Laufzeit fest
- 28. So ermitteln Sie, ob die Methode zur Laufzeit asynchron ist
- 29. So verweisen Sie auf die Assembly in mvc zur Laufzeit
- 30. .htaccess verwenden, wie kann ich Dateierweiterung zur Laufzeit
Apache API prüfen io [FilenameUtils] (http://commons.apache.org/io/api-1.4/org/apache/commons/ io/DateinameUtils.html) –
Ich würde mit dem Lesen beginnen [File.renameTo] (http://docs.oracle.com/javase/7/docs/api/java/io/File.html#renameTo (java.io .File)) – MadProgrammer
@Nandkumar: Danke, ich denke, es wird etwas nützlich für mich sein. Aber das Problem scheint, dass ich die Datei jederzeit später entzippen kann (möglicherweise in einer anderen Sitzung). Wie kann ich die vorherige Erweiterung beibehalten? – rahul0789