Это работает, если вы будете делать в два этапа: добавить расширение к выбранному файлу, а затем создать File
объект с расширением, приложенном к нему.
String withExtension = chooser.getSelectedFile().getAbsolutePath() + ".jpg";
File file = new File(withExtension)
Содержится в вашем вопросе, но только, чтобы охватить все основания: нужно проверить, если расширение не уже есть первый, например:
String withExtension = chooser.getSelectedFile().getAbsolutePath();
if(!withExtension.toLowerCase().endsWith(".jpg"))
withExtension += ".jpg";
[Вы можете добавить».jpeg "на if
выше - это допустимое расширение для файлов JPEG]
Код может работать или не работать. File
имеет toString()
, который позволит ему скомпилировать, но я предпочел бы использовать метод выше, где я могу контролировать точное имя пути, которое я получаю. Документация toString()
для объекта File
немного неясна для меня, что именно оно возвращает. В таких случаях, как этот, я предпочитаю вызывать функцию, которая, как я знаю, возвращает то, что мне нужно.
File file = new File(chooser.getSelectedFile() + ".jpg");
Этот ответ будет выполнен. Однако filePath.concat (". Jpg"), чтобы избежать ненужной конструкции StringBuilder. – Justin
@Justin Накладные расходы на создание нового 'StringBuilder' должны быть незначительными, поскольку он выполняет одно действие только один раз. – Jeffrey
Спасибо Джеффри :) К сожалению, я пока не могу проголосовать. Знаете ли вы, почему \t \t \t \t \t здесь требуется имя формата: ImageIO.write (изображение, «jpg», файл); это, похоже, не имеет значения? Если вы все равно должны иметь формат в файле? – Kingteeb