Es funktioniert, wenn Sie in zwei Schritten tun: in Erweiterung ausgewählte Datei, dann erstellen File
Objekt mit der Erweiterung angehängt.
String withExtension = chooser.getSelectedFile().getAbsolutePath() + ".jpg";
File file = new File(withExtension)
in Ihrer Frage Implizite, sondern nur alle Grundlagen abzudecken: Notwendigkeit zu prüfen, ob die Erweiterung nicht bereits erste ist, zum Beispiel:
String withExtension = chooser.getSelectedFile().getAbsolutePath();
if(!withExtension.toLowerCase().endsWith(".jpg"))
withExtension += ".jpg";
[Möglicherweise möchten Sie „.jpeg hinzufügen "an die if
oben - es ist eine gültige Erweiterung für JPEG-Dateien)
Der folgende Code kann oder kann nicht funktionieren. File
hat eine toString()
, die es ermöglicht, zu kompilieren, aber ich würde lieber die Methode oben verwenden, wo ich den genauen Pfadnamen, den ich bekomme, kontrollieren kann. Die toString()
Dokumentation für das Objekt File
ist ein bisschen unklar für mich, was genau es zurückgibt. In Fällen wie diesem, ziehe ich es vor, eine Funktion zu nennen, von der ich weiß, dass sie das zurückgibt, was ich sicher brauche.
File file = new File(chooser.getSelectedFile() + ".jpg");
Diese Antwort wird es tun. Verwenden Sie filePath.concat (". Jpg"), um eine unnötige StringBuilder-Konstruktion zu vermeiden. – Justin
@Justin Der Aufwand beim Erstellen eines neuen 'StringBuilder' sollte vernachlässigbar sein, da er die Aktion nur einmal ausführt. – Jeffrey
Danke Jeffrey :) Leider kann ich noch nicht abstimmen. Weißt du, warum \t \t \t \t \t der Formatname ist hier erforderlich: ImageIO.write (Bild, "jpg", Datei); Es scheint keinen Unterschied zu machen. Wenn Sie das Format trotzdem in der Datei haben müssen? – Kingteeb