Frage zu FileChooser
-
Hallo zusammen!
Ich arbeite zur zeit daran einen PDF-Export für unser
internes Berichtssystem zu realisieren.Über ein Menü wählt der Anwender die Option "Speichern als PDF" und
bekommt dann einen Speicherdialog (FileChooser) angezeigt.Mit Hilfe eines FileFilters hab ich schon hinbekommen
das der Anwender nur PDF Dateien angezeigt bekommt.Jetzt mein Problem:
-------------------
Wichtig wäre allerdings das der Anwender auch nur PDF
Dateien speichern kann!Jetzt hab ich gedacht das ich die Auswahl des Anwenders auf
die Endung .pdf Prüfe. Wenn keine oder eine andere Endung verwendet
wird soll sie durch .pdf ergänzt/ersetzt werden.Leider dreh ich mich im Kreis... Wie mach ich das jetzt?
Manchmal kann die API mehr Verwirrung stiften als Hilfe leisten...Wäre schön wenn mir jemand einen kleinen Stoß in die richtige
Richtung geben könnte!Danke schonmal!
MfG,
Stefan
-
wie jetzt? es dürfen also nur pdf files gespeichert werden?
-
Hallo!
Hmmm, vielleicht versteht man es so besser:
Wir setzen bei uns StyleReport Komponenten von inetsoft (www.inetsoft.com)
ein. Diese Komponenten bieten auch die möglichkeit einen Report
mit Hilfe eines PDFGenerators 1zu1 ins PDF-Format umzuwandeln.Jetzt wäre es ja dumm wenn ein Anwender einen Bericht als bericht1.txt speichert, obwohl es ja ein PDF-Format ist. Logisch.
Also, egal was der Anwender im Speicherdialog angibt (keine Dateiendung, Falsche Dateiendung), es soll am Ende immer als xxx.pdf gespeichert werden.
Bevor ich also meinen FileOutputStream mit der Auswahl des Anwenders initialisiere möchte ich auf die Endung prüfen und gegebenenfalls korregieren.
Und dafür suche ich einen eleganten Lösungsansatz...
MfG,
Stefan
-
Die letzten 4 Zeichen des Strings auswerten und wenn die nicht ".pdf" entsprechen, ".pdf" hinten dran hängen
-
Ja, soweit war ich schon!
Daher der Hinweis auf die mich-verwirrende API im ersten Posting...
if(!meinFile.getName().toLowerCase().endsWith(".pdf")) { // wie ersetze/ergänze ich dann die Endung? // es soll ja am Ende auch kein "bericht.txt.pdf" oder so rauskommen }
MfG,
Stefan
-
ich würde es so machen
int point = filename.lastIndexOf("."); String file=filename.substring(0,point-1); String realName= file+".pdf";
geht das?
gruß devil667
-
Hallo!
Ich hab inzwischen nochmal mit dem Kunden gesprochen...
Manchmal bewirkt das ja Wunder!Konkret wird jetzt gefordert das der Anwender garkeine Endung angibt; das
macht es natürlich wesentlich leichter für mich, da ich mir um die "falschen"
Endungen keine Gedanken machen brauch.Ich habs jetzt einfach so gemacht, obwohl ich denke das man das auch ohne
den Umweg über ein File-Objekt machen kann:if(!fc.getSelectedFile().getPath().endsWith(".pdf")) { File tmpFile = new File(fc.getSelectedFile().getPath()+".pdf"); fc.setSelectedFile(tmpFile); }
Trotzdem vielen Dank für euren Hirnschmalz!!
MfG,
Stefan
[ Dieser Beitrag wurde am 25.04.2003 um 12:09 Uhr von P@B8man editiert. ]
-
na, wenn ohnehin keine endung dran stehen darf, mußt du doch aber gucken, ob eine dran ist. sonst kommt vielleicht sowas raus: test.txt.pdf somit ist deine if auswahl nicht ganz korrekt, oder?
gruß
-
Hm... Ja, stimmt!
Ist tatsächlich nicht so ganz sauber...
Ich glaub ich sitz insgesammt schon zu lange an dem Projekt.
Man verliert total den Blick für das Offensichtliche!Da ist deine Idee mit dem Substring besser!
Dazu noch eine Frage:Wenn im Dateinamen kein Punkt vorhanden ist
klappt das dann so doch auch nicht?
Weil: dann gibt der lastIndexOf(".") null zurück, oder
ist das egal?MfG,
Stefan
-
wenn kein punkt vorkommt, dann gibt er -1 zurück, so in der art:
if(point==-1){ //dann .pdf anhängen, da ja keine endung dran ist }else{ //die geschichte mit dem substring }
oder? gruß devil667
-
oder du schaust was in dem textfeld drin steht, was du ja schon machst, wenn point>-1 ist, gibst du eben ne warnung aus und lässt den nutzer nochmal n eingabe machen. wie gefällt dir das?
gruß
-
Hallo!
Ich denke das ist die ideale Lösung! Ich danke dir!!
Ich werde es gleich mal implementieren...falls ich
dann noch Probleme habe melde ich mich wieder.MfG,
Stefan
-
jo, gern geschehen:-)