[gelöst] Ein Problem mit Directory.Exists()



  • Hi Leute,

    ich hab da ein merkwürdiges Problem das ich nicht verstehe.
    Ich möchte diverse Dokumente aus einem Verzeichnis lesen und in
    eine ListBox schreiben. Da es natürlich sein kann das der Anwender
    aus irgendeinen Grund das Verzeichnis gelöscht haben sollte, möchte
    ich dass das Auslesen einfach übersprungen wird.

    Nun zu meinem Problem. Mein Code sieht wie folgt aus:

    String year = Convert.ToString(this.numericUpDown1.Value);
                String readDir = structure + "\\" + year + ". Jahr";
                if(!Directory.Exists(readDir))
                {
                    this.listBox1.Items.Clear();
                    String[] files = Directory.GetFiles(readDir);
                    for (int i = 0; i < files.Length; i++)
                    {
                        this.listBox1.Items.Add(files[i]);
                    }
                }
    

    Mein Code in der if Abfrage wird übersprungen obwohl der Pfad korrekt
    ist. Wenn ich mir nen Breakpoint setze und im Debugger nach sehe,
    ist der Pfad korrekt. Habe diesen auch einfach mal raus kopiert und
    im Explorer eingefügt. Das Verzeichnis wird ohne Probleme angezeigt.

    Weiß einer was da los ist?

    Gruß Jeg



  • EDIT:

    Ich schrieb:

    Vielleicht fehlt noch ein "" am Ende des Orndernames - sonst denkt Windows, dass es eine Datei sei.

    Doch nicht!

    Mensch bin ich blind ...

    Da ist ein Ausrufungszeichen, welches auf seine Löschung wartet!

    Nimm String.Format und for each.



  • Oh man. Natürlich...!

    Dankr dir Rhombicosidodecahedron fürs schneller drüber schauen.
    Problem gelöst! 😉



  • btw, einer der Gründe warum es besser sein kann bla == false zu schreiben anstelle von !bla. Weniger cool, schwerer zu überlesen.



  • loks schrieb:

    btw, einer der Gründe warum es besser sein kann bla == false zu schreiben anstelle von !bla. Weniger cool, schwerer zu überlesen.

    So?

    String path = String.Format(@"{0}\{1}. Jahr", structure, this.numericUpDown1.Value);
      if((!Directory.Exists(readDir) != !(!(false && !false) || !(true != !true))) == false)
        { 
          this.listBox1.Items.Clear();
          foreach(Sting element in Directory.GetFiles(readDir))
            this.listBox1.Items.Add(element)
        }
    


  • loks schrieb:

    btw, einer der Gründe warum es besser sein kann bla == false zu schreiben anstelle von !bla. Weniger cool, schwerer zu überlesen.

    Einige sehen das aber anders (ich übrigens auch): http://www.mycsharp.de/wbb2/thread.php?threadid=17536


Anmelden zum Antworten