WebViper: Datei vorhanden???

Hi,

wie kann ich in java abprüfen ob eine Datei vorhanden ist, und wenn sie nicht vorhanden ist, statt einen object einen string übergeben???

mfg
-WebViper-

--
ss:| zu:] ls:/ fo:) de:> va:) ch:| sh:} n4:) rl:° br:& js:| ie:| fl:) mo:|
Linux - life is too short for reboots!
  1. moin :)»» Hi,

    File datei = new File("nameDerDatei");
    if(datei.isFile()){
       //Anweisung wenn es diese datei gibt
    }
    else{
      //Anweisung wenn es sie nicht gibt.
    }

    Die Methode isFile() gibt nur true zurueck, wenn das File-Objekt eine wirklche Datei ist (also kein Verzeichnis) _und_ existiert.

    Was du meinst mit Objekt statt String zu übergeben weiss ich grad nicht... was übergibst du denn normalerweise?

    liebe Gruesse lina

    --
    ss:| ls:] fo:| de:] ch:? rl:? br:> js:( ie:% fl:| mo:)
    Wer nicht versucht hat schon verloren.
  2. Hi,

    wie kann ich in java abprüfen ob eine Datei vorhanden ist,

    Konstruiere mit einem der Constructors der Klasse File
    http://java.sun.com/j2se/1.4.1/docs/api/java/io/File.html
    ein neues File-Objekt mit dem Pfad, an der Due die datei vermutest.

    Prüfe dann mit der Methode

    exists
    public boolean exists()
    Tests whether the file denoted by this abstract pathname exists.

    Returns:
    true if and only if the file denoted by this abstract pathname exists; false otherwise

    des File-Objekts, ob die Datei vorhanden ist.

    und wenn sie nicht vorhanden ist,

    Dann liefert File.exists() false.

    statt einen object einen string übergeben???

    Wem?

    viele Grüße

    Axel

    1. Hi,

      ich ermittle den pfad und dann den dateinamen anhand von parametern, dann öffne ich die datei. Diese datei ist ein serialisiertes object.
      Dann

      .
          .
          .
          ObjectInputStream is = new ObjectInputStream(fs);
          .
          .
          .
          .
          ReturnDataContainer rDCFile = null;
          .
          .
          .
          rDCFile = (ReturnDataContainer)is.readObject();
        }
       }

      catch (Exception e){
          System.out.println("Fehler beim lesem " +e);
          e.printStackTrace();
          }

      return rDCFile;

      in diesen rDCFile ist ein Object, das einen Vector enthält und in diesen Vector sind widerum mehrere objecte, aus denen ich werte per get-Methoden lese und dann über einen controller an eine jsp seite weitergebe und anzeige... aber wenn die datei nicht gefunden wird würde es reichen in der jsp-seite dann ein "keine werte vorhanden" anzuzeigen...

      aber ich bekomm das irgendwie nicht gebacken... ich glaub es ist einfach viel zu heiss um sich zu konzentrieren *wasservonstirnwisch*

      mfg
      -WebViper-

      --
      ss:| zu:] ls:/ fo:) de:> va:) ch:| sh:} n4:) rl:° br:& js:| ie:| fl:) mo:|
      Linux - life is too short for reboots!
      1. Hallo,

        ich ermittle den pfad und dann den dateinamen anhand von parametern, dann öffne ich die datei. Diese datei ist ein serialisiertes object.
        Dann

        Stopp! Da fehlt doch was.

        FileInputStream fs = new FileInputStream("xyz.ser");
        Hier kannst Du eine FileNotFoundException abfangen. Bei Auftreten dieser Exception ist die Datei nicht vorhanden.

        Wenn Du den Stream öffnest, bevor Du Deine Funktion aufrufst, kannst Du bei Vorhandensein der Datei die Funktion aufrufen und dieser den Stream als Argument übergeben, bei Nichtvorhandensein rufst Du eine andere Funktion auf, die den gewünschten String übergibt.

        Wenn Du den Stream unbedingt innerhalb der Funktion öffnen musst, kannst Du bei Auftreten der FileNotFoundException ein Rückgabeobjekt erstellen, das auf die Tatsache, dass die Datei nicht vorhanden war, hinweist. Die Klasse ReturnDataContainer kenne ich nicht, weiß also nicht, was mit der alles möglich ist.

        ObjectInputStream is = new ObjectInputStream(fs);
            .
            ReturnDataContainer rDCFile = null;
            .
            rDCFile = (ReturnDataContainer)is.readObject();
          }
         }

        catch (Exception e){

        Alle Ausnahmen in einem catch-Statement abzuangen ist _nie_ eine gute Idee. Du versperrst Dir dadurch die sinnvolle Nutzung der Ausnahmen.

        System.out.println("Fehler beim lesem " +e);
            e.printStackTrace();
            }

        return rDCFile;

        viele Grüße

        Axel

        1. Hi,

          Stopp! Da fehlt doch was.

          FileInputStream fs = new FileInputStream("xyz.ser");

          ne, fehlt nicht... hab ich nur vergessen mit zu posten ;))

          Hier kannst Du eine FileNotFoundException abfangen. Bei Auftreten dieser Exception ist die Datei nicht vorhanden.

          is mir soweit klar...

          Wenn Du den Stream öffnest, bevor Du Deine Funktion aufrufst, kannst Du bei Vorhandensein der Datei die Funktion aufrufen und dieser den Stream als Argument übergeben, bei Nichtvorhandensein rufst Du eine andere Funktion auf, die den gewünschten String übergibt.

          und das überprüfe ich mit File.exists versteh ich das jetzt richtig? und mach dann meine entscheidung, quasi

          if (File.exists(xyz.ser))
          {
            dann gib werte zurück bla bla
          }
          else
          {
            gib keine-werte-string zurück
          }

          Wenn Du den Stream unbedingt innerhalb der Funktion öffnen musst, kannst Du bei Auftreten der FileNotFoundException ein Rückgabeobjekt erstellen, das auf die Tatsache, dass die Datei nicht vorhanden war, hinweist. Die Klasse ReturnDataContainer kenne ich nicht, weiß also nicht, was mit der alles möglich ist.

          in der Klasse ReturnDataContainer ist ein Vector mit objecten... dieser ReturnDatacontainer wird serialisiert und abgespeichert... siehe [pref:t=49584&m=271063]...

          quasi im catch-statement ein Object erzeugen... und dieses gib ich dann (wenn ein fehler auftritt) automatisch zurück.

          catch (Exception e){
          Alle Ausnahmen in einem catch-Statement abzuangen ist _nie_ eine gute Idee. Du versperrst Dir dadurch die sinnvolle Nutzung der Ausnahmen.

          is mir klar... bloß vorerst mal, dass mir nicht immer gleich alles abrauscht und die fehler schön in die logs geschrieben werden, falls sie mir ansonsten nicht auffallen...

          Versteh ich dich so groß und ganz richtig??? danke auf jeden Fall, entweder ich steh auf der leitung oder was weiß ich... ich habs auf jeden fall nicht ganz gerafft...

          mfg & DANKE!!!
          -WebViper-

          --
          ss:| zu:] ls:/ fo:) de:> va:) ch:| sh:} n4:) rl:° br:& js:| ie:| fl:) mo:|
          Linux - life is too short for reboots!
          This is unix land.
          In quiet nights you can hear windows machines reboot.
          1. Hallo,

            Versteh ich dich so groß und ganz richtig??? danke auf jeden Fall, entweder ich steh auf der leitung oder was weiß ich... ich habs auf jeden fall nicht ganz gerafft...

            Entweder in dem Teil der Klasse, die Deine Methode aufruft:
            ...
            try {
              FileInputStream fs = new FileInputStream("xyz.ser");
              ReturnDataContainer rdc = DeineMethode(fs);
            } catch (FileNotFoundException fnfe) {
                String ausgabe = "Datei nicht gefunden."
            }
            ...wenn rdc nicht null, dann damit weiter, sonst mit dem String weiter...

            Oder in Deiner Methode:
            ...
            ReturnDataContainer rDCFile = null;
                .
            try {
              FileInputStream fs = new FileInputStream("xyz.ser");
              ObjectInputStream is = new ObjectInputStream(fs);
                .
              rDCFile = (ReturnDataContainer)is.readObject();
            } catch (FileNotFoundException fnfe){
                System.out.println("Datei nicht gefunden.");
                rDCFile = null;
            } catch (IOException ioe){
                System.out.println("Lesen fehlgeschlagen.");
                rDCFile = null;
            }
                .
            return rDCFile;
            ...

            Dabei fällt mir auf; Was liefert denn Deine Methode bisher zurück, wenn die Datei nicht gefunden wird? So, wie Du es geschrieben hattest, mit der Deklaration der Variable rDCFile im try-Block, hätte es eigentlch einen Compilerfehler geben müssen.

            viele Grüße

            1. Hi,

              hmm... es gibt auch einen Fehler... ok, das hilft mir jetzt weiter! Dank dir vielmals!!!

              mfg
              -WebViper-

              --
              ss:| zu:] ls:/ fo:) de:> va:) ch:| sh:} n4:) rl:° br:& js:| ie:| fl:) mo:|
              Linux - life is too short for reboots!
              This is unix land.
              In quiet nights you can hear windows machines reboot.