Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Verzeichnis leer???

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Verzeichnis leer???

    Hi und Hallo,

    gibt es eine elegantere Möglichkteit zu prüfen, ob das Verzeichnis 'test' leer ist?

    $n=opendir("test");
    while ($datei=readdir($n))
    {
    $i++;
    }
    if ($i>2)
    { // NICHT LEER
    }
    else
    { // Jo, leer
    }

    closedir($n);


  • #2
    Code:
    if count(scandir('test')) > 2 ....
    Aber erst mit PHP5
    Gruss
    L

    Kommentar


    • #3
      Mit PHP 4 müsste es so gehen:
      Code:
      if ($verzeichnis = opendir("."))
       {
        if (!($datei = readdir($verzeichnis)))
         {
          echo "Verzeichnis leer";
         }
       }
      mfg RudiS

      Kommentar


      • #4
        Zitat von RudiS
        Mit PHP 4 müsste es so gehen:
        Leider nicht, da es auch in einem leeren Verzeichnis die Einträge '.' und '..' gibt.

        Kommentar


        • #5
          Das wird nicht gehen, weil das aktuelle (".") und das übergeordnete ("..") Verzeichnis immer vorhanden sind. Und dann sind wir gleich wieder bei totti74's Lösung
          Gruss
          L

          Kommentar


          • #6
            Stimmt, das hatte ich vergessen.
            mfg RudiS

            Kommentar


            • #7
              Dann bin ich ja gar nicht so PHP-fremd

              Ich find´s halt nur sehr umständlich.

              Kommentar


              • #8
                Frage: gibts die Einträge '.' und '..' auch in einer Windowsumgebung?
                (Das Script müsste nämlich auf beiden Systemen laufen.

                Kommentar


                • #9
                  Zitat von totti74
                  Ich find´s halt nur sehr umständlich.
                  IdR. macht man das so:
                  Code:
                  $p = '/pfad/zum/verzeichnis';
                  if ($d = dir ($p) )
                  {
                    $p .= '/';
                    while ($n = $d->read() )
                    {
                       if ($n == '.' OR $n == '..') continue; # Pointer überlesen
                  # mach was mit $n und $p
                    }
                    $d->close();
                  }
                  else
                  {
                    print "Fehler: $p nicht lesbar";
                  }
                  Dein Problem kann man so lösen:
                  Code:
                  $p = '/pfad/zum/verzeichnis';
                  $leer = true;
                  if ($d = dir ($p) )
                  {
                    while ($n = $d->read() )
                    {
                       if ($n == '.' OR $n == '..') continue; # Pointer überlesen
                       $leer = false; # es existiert ein Eintrag
                       break; # Schleife abbrechen
                    }
                    $d->close();
                    printf ('Verzeichnis %s ist %s leer', $p, (($leer === false) ? 'nicht' : ''));
                  }
                  else
                  {
                    print "Fehler: $p nicht lesbar";
                  }

                  Kommentar


                  • #10
                    Danke, das gefällt mir schon viel besser.
                    Ciao und nochmals danke an alle... totti

                    Kommentar

                    Lädt...
                    X