funciona si lo hace en dos pasos: añadir la extensión de archivo seleccionado, a continuación, crear File
objeto con la extensión anexa a la misma.
String withExtension = chooser.getSelectedFile().getAbsolutePath() + ".jpg";
File file = new File(withExtension)
implícito en su pregunta, pero sólo para cubrir todas las bases: necesidad de comprobar si la extensión no está ya allí en primer lugar, por ejemplo:
String withExtension = chooser.getSelectedFile().getAbsolutePath();
if(!withExtension.toLowerCase().endsWith(".jpg"))
withExtension += ".jpg";
[Es posible que desee añadir" .jpeg "al if
anterior - es una extensión válida para archivos JPEG]
El código siguiente puede o no funcionar. File
tiene un toString()
que le permitirá compilar, pero prefiero usar el método anterior, donde puedo controlar el nombre de ruta exacto que obtengo. La documentación toString()
para el objeto File
me resulta un poco confusa en cuanto a qué devuelve exactamente. En casos como este, prefiero llamar a una función que sé que devuelve lo que necesito con certeza.
File file = new File(chooser.getSelectedFile() + ".jpg");
Esta respuesta lo hará. Sin embargo, haga filePath.concat (". Jpg") para evitar una construcción StringBuilder innecesaria. – Justin
@Justin La sobrecarga de crear un nuevo 'StringBuilder' debe ser insignificante ya que solo realiza la acción una vez. – Jeffrey
Gracias Jeffrey :) Tristemente no puedo votar aún. ¿Sabe por qué \t \t \t \t \t se requiere el nombre del formato aquí: ImageIO.write (imagen, "jpg", archivo); no parece hacer una diferencia? Si tiene que tener el formato en el archivo de todos modos? – Kingteeb