Frage zu FileChooser



  • 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:-)


Anmelden zum Antworten