Próbuję zaimplementować program do rozpakowania i rozpakowania pliku. Wszystko, co chcę zrobić, to zip plik (fileName.fileExtension) o nazwie jako fileName.zip i po rozpakowaniu zmienić go ponownie na fileName.fileExtension. Czy ktoś może mi powiedzieć, jak to zrobić?Jak zmienić rozszerzenie pliku w czasie wykonywania
Odpowiedz
Spróbuj z:
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
}
To jak kiedyś zmieniać nazwy plików lub zmienić jego rozszerzenie.
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));
}
edit: metoda Johna zmienia nazwę pliku (przy zachowaniu rozszerzenia). Aby zmienić rozszerzenie zrobić:
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);
}
powoduje jedynie zmianę ostatniego rozszerzenia do pliku, to znaczy .gz
część archive.tar.gz
. Dlatego działa dobrze z ukrytymi plikami linux, dla których nazwa zaczyna się od .
Jest to całkiem bezpieczne, ponieważ jeśli getParent()
zwraca null
(tj. W przypadku, gdy rodzic jest rootem systemu), jest "rzutowany" na pusty łańcuch jako cały argument konstruktora pliku jest oceniany jako pierwszy.
Jedynym przypadkiem, w którym otrzymasz zabawne dane wyjściowe, jest przekazanie pliku reprezentującego sam systemowy katalog główny, w którym to przypadku plik null
jest dodawany do reszty łańcucha znaków.
Cześć John. To samo podejście obecnie używam. Co chcę zrobić, to mogę oddzielnie korzystać z funkcji zamka błyskawicznego i rozpinania. W takim przypadku nie będę miał rozszerzenia pliku. – rahul0789
indexOf nie działa. Wypróbuj lastIndexOf(). To dlatego, że tylko tekst po ostatnim "." jest rozszerzeniem, a plik może mieć wiele "." postacie. Poza tym przeszukiwanie od końca jest zwykle szybsze w znalezieniu rozszerzenia – brunoais
. Dokonałbym dwóch zmian: a) nazwa newExtension as newExtensionWithDot b) zwrócenie nowego pliku (f.getParent(), nazwa + nowe rozszerzenie); // "/" jest kompatybilny tylko z Uniksem, więc kod może być użyty wszędzie. – BitLauncher
FilenameUtils.getFullPathNoEndSeparator(doc.getDocLoc()) + "/" +
FilenameUtils.getBaseName(doc.getDocLoc()) + ".xml"
Chciałbym sprawdzić, czy plik ma rozszerzenie przed zmianą. Poniższa rozwiązanie działa także z plików bez rozszerzenia lub wieloma rozszerzeniami
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. WPF: Jak zmienić CurrentUICulture w czasie wykonywania
- 2. jak zmienić typ instancji w czasie wykonywania
- 3. Jak zmienić lokalizację strony w czasie wykonywania
- 4. Skompiluj rozszerzenie kodu C# w czasie wykonywania
- 5. Zmienić ustawienia narodowe w czasie wykonywania?
- 6. Jak zmienić typ UIBarButtonItem w UINaviagationBar w czasie wykonywania?
- 7. Jak zmienić język w czasie wykonywania w java swing
- 8. Jak zmienić konfigurację extraParams proxy w czasie wykonywania w extjs?
- 9. Jak zmienić rozmiar formantu użytkownika w WPF w czasie wykonywania
- 10. Objective-C: Jak zmienić klasę obiektu w czasie wykonywania?
- 11. Android, jak zmienić język aplikacji w czasie wykonywania
- 12. Jak zmienić Spring @Scheduled fixedDelay w czasie wykonywania
- 13. Jak zmienić nazwę pliku wyników podczas wykonywania w JMeter?
- 14. Jak zmienić rozszerzenie pliku zmiennych Makefile?
- 15. Czy mogę zmienić ustawienia Silverlight poza przeglądarką w czasie wykonywania?
- 16. Jak dostosować poziomy log4j w czasie wykonywania?
- 17. Jak uzyskać preferencje dzwonka w czasie wykonywania?
- 18. ios zmienić domyślny kontroler widoku storyboard w czasie wykonywania
- 19. Czy można zmienić właściwości WebReference w czasie wykonywania?
- 20. Czy mogę zmienić pamięć executorów Sparka w czasie wykonywania?
- 21. Zmiana właściwości w czasie wykonywania log4j
- 22. Jak odczytać zawartość pliku w czasie wykonywania? Szef kuchni czyta w czasie kompilacji
- 23. Ładowanie XAML w czasie wykonywania?
- 24. Awaria OCMock w czasie wykonywania
- 25. Jak zablokować orientację w czasie wykonywania
- 26. Jak pozbyć się LD_LIBRARY_PATH w czasie wykonywania?
- 27. Jak uzyskać JavaDoc metody w czasie wykonywania?
- 28. Jak uzyskać typ ogólny w czasie wykonywania?
- 29. Jak tworzyć formanty w czasie wykonywania?
- 30. Identyfikacja Asp.Net - Ustawianie pliku CookieDomain w czasie wykonywania
sprawdzić Apache API do IO [FilenameUtils] (http://commons.apache.org/io/api-1.4/org/apache/commons/ io/Nazwa plikuUtils.html) –
Zacznę od czytania [File.renameTo] (http://docs.oracle.com/javase/7/docs/api/java/io/File.html#renameTo (java.io .File)) – MadProgrammer
@Nandkumar: Dzięki Myślę, że będzie to przydatne dla mnie. Ale problem wydaje się, że mogę rozpakować plik w dowolnym momencie (może być w innej sesji). Jak zachować poprzednie rozszerzenie? – rahul0789