Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ilość plików w folderze
Forum PHP.pl > Forum > PHP
waser
otóż chce mieć ilość flików w danym katalogu, oczywiście także w podkatalogach tego katalogu, ma ktos jakis pomysl?
bendi
Cytat(waser @ 2005-08-08 14:55:00)
otóż chce mieć ilość flików w danym katalogu, oczywiście także w podkatalogach tego katalogu, ma ktos jakis pomysl?

Było ostatnio nawet parę razy:
  1. <?php
  2.  echo( count( glob( '*.*' ) ) );
  3. ?>
Bociek
albo:

  1. <?php
  2.  
  3. $handle = opendir('katalog/');
  4. $zmienna = null;
  5.  
  6. while($file = readdir($handle))
  7. {
  8. if($file!='.' && $file!='..')
  9. {
  10. $zmienna++;
  11. }
  12. }
  13.  
  14. echo $zmienna; //masz ilosc plikow
  15.  
  16. ?>


powyższy przykład podał __Mateo w tym poście winksmiley.jpg
hmm jedyny problem to to, że nie liczy plików w podkatalogach, ale można go przerobić
waser
scan dir nie jest dostepny w php4 sad.gif
nospor
ech, masz:
  1. <?php
  2.  
  3. function countFiles($path, &$count)
  4. {
  5. $handle = opendir($path);
  6. while($file = readdir($handle))
  7. {
  8. if($file!='.' && $file!='..')
  9. {
  10. if (is_dir($path.'/'.$file))
  11. countFiles($path.'/'.$file, $count);
  12. else
  13. $count++;
  14. }
  15. }
  16. closedir($handle);
  17. }
  18.  
  19. $count = 0;
  20. countFiles('c:/katalog', $count);
  21. echo $count; //masz ilosc plikow
  22.  
  23. ?>
Kas
Ja toz zrobiłem tak

  1. <?php
  2. $dir = "./news";
  3. $dh = opendir($dir);
  4. while (false !== ($filename = readdir($dh))) {
  5.  $files[] = $filename;
  6. }
  7.  
  8. $i = count($files) - 2;
  9.  
  10. echo ("Łącznie jest $i newsów.");
  11. ?>
nospor
@kas ale Twój sposób zliczy tylko w katalogu i na dodatek zliczy tez katalogi. nie zliczy w podkatalogach.Chodzilo o pliki w katalogu i jego podkatalogach. pozatym jak już robisz opendir to daj też closedir.

Tu trzeba rekurencję machnąć jak ja w poprzednim poście
waser
dzięki nospor, skrypcik śmiga bardzo sprawnie biggrin.gif
ale dzieki etż wsyzstkim za fatyge, jestście najlepsi! aarambo.gif

dobra czyli kolejny problem rowiazany.. hehh no to pora rozwiazac kolejne... zara zaloze nowy post tym razem z includowaniem - kurde trzeba sie nameczyc jak sie stronke robi snitch.gif
Kas
@nospor
Zliczy wszystko - 2.
Zakładałem, że nie ma podkatalogów.

ja wiem co robi Twój skrypt. Ty mi tego nie musisz mówić. Ja ci tylko napisałem, że jest nie zgodny z tematem.
----
nospor


Edytowanie moich postów zabronione! tongue.gif
A to dobrze, że wiesz. Jednak powiedzieć mogę.
Liko
<span style="font-weight: bold;">@nospor:</span> Pozwoliłem sobie aby Ci pokazać jak można zliczyć ilość plików bez rekurencji. Jak mi sie wydaje rekurencja nie jest zbyt wydajna.



  1. <?php
  2. /**
  3.  * Kawalek funkcji wyciagnietej z klasy DirWalker.
  4.  * @link http://php.net/manual/pl/function.readdir.php#52864
  5.  * @author matthew.panetta@gmail.com
  6.  */
  7. function countFiles( $dir )
  8. {
  9.     $countFiles = 0;
  10.     $dirList[] = $dir;
  11.     while ( ( $currDir = array_pop( $dirList ) ) !== NULL )
  12.     {
  13.         $dir = opendir( $currDir );
  14.         while( ( false !== ( $file=readdir( $dir ) ) ) )
  15.         {
  16.             if( $file =='.' || $file == '..' )
  17.             {
  18.                 continue;
  19.             }
  20.  
  21.             $fullName = $currDir . DIRECTORY_SEPARATOR . $file;
  22.  
  23.             if( is_dir ( $fullName ) )
  24.             {
  25.                 array_push ( $dirList, $fullName );
  26.                 continue;
  27.             }
  28.  
  29.             $countFiles++;
  30.         }
  31.  
  32.         closedir($dir);
  33.     }
  34.     return $countFiles;
  35. }
  36.  
  37. print( countFiles( '../' ) );
  38. ?>


o, ciekawe rozwiązanie. Przyda się pewnie kiedyś.
dziękować, dziękować biggrin.gif
-----
nospor
waser
nospor, jest problem maly z tym skryptem co mi napisales, mianowicie gdy pisze adres c:/cos_tam, to nie ma problemu ale gdy pisze adres do katalogu www to wyskakuja bledy...

failed to open dir: not

readdir(): supplied argument is not a valid Directory


closedir(): supplied argument is not a valid Directory
nospor
To nie jest problem ze skryptem jako takim. To jest problem z funkcją opendir, która otwiera katalog. no może jest problem, że nie ma kontroli błędów biggrin.gif

próbujesz otworzyć katalog, który jest na www. I albo nie masz do niego praw albo opendir nie pozwala na otweiranie takich katalogów. Aż takich cudów co ty próbujesz to ja nie robilem biggrin.gif

edit:
a czemu do www się odwolujesz? nie możesz katalogów z wlasnego serwera? Może ty złą ściezkę podajesz
waser
chodiz oto ze to katalog ze zdjeciami, jest zaduzy zeby trzyamc go razem ze strona na serwerze (realia darmowych serwerow).. a moglbys dorogic tak zeby wynik wrzucal do pliku testowego? wtedy po psrostu includowalbym plik textowy z tamtego serwere a plik oliczajacy bylby na nim biggrin.gif
nospor
oj już nie przesadzaj. sam zrób
funckje fopen, fwrite, fclose. W manualu jest piękny przykład:
http://pl.php.net/manual/pl/function.fwrite.php
a najszybciej:
http://pl.php.net/manual/pl/function.file-put-contents.php

zamiast
echo $count; //masz ilosc plikow
masz dać zapisanei do pliku.
mike
ja dodam, że gdybyście korzystali z php5 anie PHP4 to ....
  1. <?php
  2.  
  3. $objDir = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( './folder/' ) );
  4.  
  5. foreach( $objDir as $objFile )
  6. {
  7. echo $objFile . '<br>';
  8. }
  9.  
  10. ?>


I w ten sposób wyświetliliśmy wszystkie pliki w folderach, nawet w podfolderach winksmiley.jpg
nospor
@mike_mech czytaj wszystkie posty a byś siędowiedzial ze chodzi o php4
mike
Wiem @nospor, po prostu chciałem zwrócić uwagę na dobrodziejstwa PHP5, o których często się nie pamięta.

Można to potraktować jak swego rodzaju Off-Topic.

winksmiley.jpg

oki, tylko że tekst "A panowie zapomnieli o dobroci PHP5" gdy potrzeba nam do php4, jest trochę nie na miejscu.
Gdyby było np. "ja dodam, że gdybyście korzystali z php5 anie php4 to ...." wtedy by wynikalo ze posty czytales i że to taka przyjazna wzmianka. biggrin.gif
----
nospor


tongue.gif
Widmo
Dzieki mike_mech, wlasnie bardzo mi pomogles z tym skryptem biggrin.gif

szukalem juz dlugo.

jedno tylko pytanie - czy jest gdzies dostepny kod zrodlowy tej klasy ?
mike
Cytat(Widmo @ 2006-04-12 00:36:27)
jedno tylko pytanie - czy jest gdzies dostepny kod zrodlowy tej klasy ?

Wszystkie te klasy należą do biblioteki SPL, która jest standardowo dołączona do php5.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.