To działa, jeśli nie w dwóch etapach: dodać rozszerzenie do wybranego pliku, a następnie utworzyć File
obiekt z rozszerzeniem załączonym do niego.
String withExtension = chooser.getSelectedFile().getAbsolutePath() + ".jpg";
File file = new File(withExtension)
Implikowane w swoim pytaniu, ale tylko na pokrycie wszystkich baz: trzeba sprawdzić, czy rozszerzenie nie jest już tam pierwszy, np:
String withExtension = chooser.getSelectedFile().getAbsolutePath();
if(!withExtension.toLowerCase().endsWith(".jpg"))
withExtension += ".jpg";
[Możesz dodać”.jpeg "do powyższego if
- jest to poprawne rozszerzenie plików JPEG]
Poniższy kod może, ale nie musi działać. File
ma toString()
, który pozwoli mu skompilować, ale wolałbym użyć powyższej metody, gdzie mogę kontrolować dokładną nazwę ścieżki, którą otrzymuję. Dokumentacja toString()
dla obiektu File
jest dla mnie niejasna, co dokładnie zwraca. W takich przypadkach wolę wywoływać funkcję, która na pewno zwraca to, czego potrzebuję na pewno.
File file = new File(chooser.getSelectedFile() + ".jpg");
Ta odpowiedź zrobi to. Jednak należy użyć pliku filePath.concat (".jpg"), aby uniknąć niepotrzebnej konstrukcji StringBuilder. – Justin
@Justin Narzut tworzenia nowego 'StringBuilder' powinien być nieistotny, ponieważ wykonuje tylko raz akcję. – Jeffrey
Dziękuję Jeffrey :) Niestety nie mogę jeszcze głosować w górę. Czy wiesz, dlaczego \t \t \t \t \t nazwa formatu jest wymagana tutaj: ImageIO.write (obraz, "jpg", plik); to nie robi różnicy? Jeśli mimo to musisz mieć format pliku? – Kingteeb