Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Ordner inkl. Unterordner und Dateien auslesen

Einklappen

Neue Werbung 2019

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

  • Scriptsuche [Erledigt] Ordner inkl. Unterordner und Dateien auslesen

    Hallo,

    ich suche ein Script das mir alle Ordner/Unterordner inkl. Dateien eines Verzeichnisses samt Name, Erstellungsdatum, Änderungsdatum in ein einfaches Array speichert.

    Würde mich über Infos freuen.

    VG
    epole

  • #2
    was ist dir das wert?

    Kommentar


    • #3
      Hi,

      ganz ernsthaft: warum machst du das nicht schnell selber? Wirklich nicht besonders aufwendig und hier im Forum wurde das Thema schon öfters behandelt!


      Bsp.:

      PHP-Code:
      <?php
      $verzeichnis 
      'dateien/';
       
      echo <<<TABLEHEAD
      <table border="1" cellpadding="2" cellspacing="3">
          <tr>
          <th>Dateiname</th>
          <th>Dateigröße</th>
          <th>aktualisiert</th>
          </tr>
      TABLEHEAD;
       

      foreach (new 
      DirectoryIterator($verzeichnis) as $datei)
      {
          if (!
      $datei->isDir() && !$datei->isDot())
          {
              echo 
      '<tr>';
              echo 
      '<td><a href="' .$verzeichnis.$datei->getFilename(). '">' .$datei->getFilename(). '</a></td>';
              echo 
      '<td>' .ceil$datei->getSize()/1024 ). ' KB</td>';
              echo 
      '<td>' .date'd.m.Y'$datei->getMTime() ). '</td>';
              echo 
      "</tr>\n";
          }
      }

      echo 
      '</table>';
      ?>
      ...kannst Du beliebig erweitern (check die Doku) oder ein Array damit befüllen.

      mfg wolf29
      while (!asleep()) sheep++;

      Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

      Kommentar


      • #4
        Hallo wolf29,

        ganz lieben Dank für Deinen tollen Einstieg.

        Vorab: Ich würde es gerne selber machen, allerdings bin ich gerade auf dieser Ebene mit dem Verzeichnissystem echt absoluter Frischling.

        Mir ist der Flow noch nicht ganz klar, wenn ich wüsste wie genau ich vorgehen muss könnte ich es vielleicht sogar schaffen.

        Dein Script durchläuft ja nur einen Ordner und gibt die dort befindlichen Dateien aus. Ich möchte aber rekursiv alle Ordner nach Dateien durchsuchen und nicht nur deren Namen und Daten sondern auch die der Ordner in einem Array speichern.

        Ein Array befüllen bekomme ich schon noch hin, auch habe ich ein Script das mir alle Ordner und Unterordner und Dateien ausliest bereits angefangen zu schreiben, aber das Verbinder der ganzen Materie wächst mir über den Kopf.

        Hier mal das Script das ich bisher habe:

        PHP-Code:
        function getDir($dir) {

          
        $directory opendir($dir);
          
          while(
        $file readdir($directory)) {
            if(
        $file != "." && $file != "..") {
              if(
        is_dir("$dir/$file")) {
                echo 
        "$file<br>";
                
        getDir("$dir/$file");
              } else {
                echo 
        "$file<br>";
              }
            }
          }
          
        closedir($directory);
        }

        getDir("testdir"); 
        Damit bekomme ich schön untereinander alles angezeigt was ich in meinem Verzeichnis habe:

        PHP-Code:
        dir01
        dir03
        dir04
        file04
        .html
        file03
        .html
        dir02
        file01a
        .html
        file02
        .html
        usw

        Kommentar


        • #5
          Ok, ich möchte jetzt ungerne ne Lösung posten, aber schau dir z.B. mal

          http://www.php.net/manual/de/class.r...ayiterator.php

          an + die ganzen Beispiele, die du jeweils ganz unten bei

          http://www.php.net/manual/de/class.d...ryiterator.php
          http://www.php.net/manual/de/directo....construct.php

          sind. Dann hast du ganz schnell die Lösung. Wie du ein Array definierst, weißt du sicherlich, nicht?

          P.S. Tipp: an der Stelle, müsstest du dann dein array befüllen: echo "$file<br>"; (wenn man deinen code nimmt)

          mfg wolf29

          P.S. So wie du das machst, geht das auch, ist aber mit der PHP 5 Methode directoryiterator deutlich effizienter
          while (!asleep()) sheep++;

          Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

          Kommentar


          • #6
            Hallo wolf29,

            natürlich wollte ich keine Lösung von Dir. Vielen Dank für die Links. ich versuche mich dort mal durch zu arbeiten. Was ich dort gesehen habe macht mir allerdings etwas Angst

            LG
            epole

            Kommentar


            • #7
              Hab da mal eben was rauskopiert aus nem alten Code von mir:

              PHP-Code:
              <?php
              class Fileoperations {

                public function 
              recCountFiles($folder='') {
                  if (!
              $this->checkDir($folder)) return false;
                  
              $ite = new RecursiveDirectoryIterator($folder.'/');
                  
              $nbfiles 0;
                  foreach (new 
              RecursiveIteratorIterator($ite) as $filename=>$cur) {
                    
              $nbfiles++;
                  }
                  return 
              $nbfiles;
                }

                public function 
              recFileSize($folder='') {
                  if (!
              $this->checkDir($folder)) return false;
                  
              $ite = new RecursiveDirectoryIterator($folder.'/');
                  
              $bytestotal 0;
                  foreach (new 
              RecursiveIteratorIterator($ite) as $filename=>$cur) {
                    
              $filesize=$cur->getSize();
                    
              $bytestotal+=$filesize;
                  }
                  
              $bytestotal=number_format($bytestotal);
                  return 
              $bytestotal;
                }

                public function 
              recFileList($folder='') {
                  
              $folder realpath($folder);
                  
              $fileSPLObjects =  new RecursiveIteratorIterator(new RecursiveDirectoryIterator($folder),RecursiveIteratorIterator::CHILD_FIRST);
                  foreach( 
              $fileSPLObjects as $fullFileName => $fileSPLObject ) {
                    if (!
              $fileSPLObject->isDir()) {
                        
              $data[$fileSPLObject->getPath()][] = $fileSPLObject->getPath().DIRECTORY_SEPARATOR.$fileSPLObject->getFilename();
                    }
                  }
                  if (!isset(
              $data)) return array();
                  return 
              $data;
                } 

              ...
              edit:

              Grade mal ins Manual geschaut:

              http://www.php.net/manual/de/class.r...ryiterator.php <- den kannte ich noch gar nicht...

              Kommentar


              • #8
                WOW phpsecretary

                mal eben ins Manual schauen und dann gleich mal eben fast fertiges Script posten...

                wie lange muss man da schon Hardcorprogrammierer sein???

                DANKE!

                Gruß
                epole

                Kommentar


                • #9
                  Hab da mal eben was rauskopiert aus nem alten Code von mir:

                  Kommentar


                  • #10
                    Wieso liegt hier eigentlich Stroh ?
                    [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                    Kommentar


                    • #11
                      [COLOR="#F5F5FF"]--[/COLOR]
                      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                      [COLOR="#F5F5FF"]
                      --[/COLOR]

                      Kommentar


                      • #12
                        Dann kann ich jetzt auch mal das Ergebnis posten weils soweit fertig ist!
                        DANKE wolf29 und an alle anderen die mir dabei geholfen haben

                        PHP-Code:
                        function directoryScan($dir) {
                            if (isset(
                        $dir) && is_readable($dir)) {
                                
                        $directionList = Array();
                                
                                
                        $dir realpath($dir);
                                
                                    
                        $objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir,FilesystemIterator::SKIP_DOTS), RecursiveIteratorIterator::SELF_FIRST);
                                    
                                
                        $x 0;
                                foreach(
                        $objects as $entry => $object){    
                                    
                        $getpath str_replace($dir''$entry);
                                    
                        $size ceil($object->getSize()/1024);
                                    
                        $changed date($object->getMTime());
                                        
                                    
                        $directionList[$x]['path'] = $getpath;
                                    
                        $directionList[$x]['size'] = $size;
                                    
                        $directionList[$x]['changed'] = $changed;            
                                
                        $x ++;
                                }
                                
                                return 
                        $directionList;
                            }
                        }

                        $result directoryScan('testdir');

                        print_r ($result); 

                        Kommentar

                        Lädt...
                        X