ich habe ein Grafikprogramm mit verschiedenen zeichenbaren Objekten nun möchte ich aus diesem Programm diese Objekte als SVG-Repräsentation in eine Datei exportieren.
Dazu habe ich einen JButton wo ein ActionListener dranhängt der über seine Methode actionPerformed() einen JFileChooser öffnet wo man die Datei wählen kann in die das Objekt reingeschrieben werden soll…
int returnVal = drawingPanelView.getFileChooser()
.showOpenDialog(null);
JFileChooser chooser = drawingPanelView.getFileChooser();
if (returnVal == JFileChooser.APPROVE_OPTION) {
File exportFile = chooser.getSelectedFile();
try {
FileWriter writer = new FileWriter(exportFile, true);
writer.write("<?xml version=\"1.0\"encoding=\"iso-8859-1\"?>");
writer.write(System.getProperty("line.separator"));
writer.write("<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" ");
writer.write(System.getProperty("line.separator"));
writer.write("\"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">");
writer.write(System.getProperty("line.separator"));
writer.write("<svg xmlns=\"http://www.w3.org/2000/svg\">");
for (DrawableObject d : drawableObjectsModel) {
if (d instanceof Circle) {
Circle c = (Circle) d;
writer.write(c.toSVG());
}
writer.write("</svg>");
writer.flush();
writer.close();
}
} catch (IOException e1) {
e1.printStackTrace();
}
}```
nun habe ich das Problem dass ich die Dateiendung gerne in .svg ändern würde damit ich wenn ich z.b. in eine .txt schreibe das ganze danach im Browser anzeigen kann.
Was kann ich tun?
mfg
Wieso solltest du das denn dann initialk in ne .txt schreiben? Falls ne .txt Datei ausgewählt wird? Da würd ich dem FileChooser einen entsprechenden Filter geben das nur solche ausgewählt werden können, die du erlaubst (in dem Fall .svg bzw. Ordner).
Ansonsten gäbe es da noch File.renameTo(File). Damit solltest du die Datei umbenennen können. Wobei das auch leicht mal fehlschlagen könnte bzw du wahrscheinlich die alte löschen musst
Keine Ahnung, was Code und Text mit dem Problem des TOs zu tun haben, aber zumindest der (versteckte) Hinweis zum Speichern showSaveDialog statt showOpenDialog zu verwenden.
Dann wie von Clayn erwähnt den JFileChooser noch mit einem Filter versehen, der nur Verzeichnisse und Dateien der Endung svg zulässt.
Als zusätzlichen Schritt kann man noch prüfen, ob der selektierte oder evtl. manuell eingegebene File Name mit “.svg” endet und diese Endung ggf. ergänzen.