| Autor | Zpráva | ||
|---|---|---|---|
| papirek Profil * |
#1 · Zasláno: 27. 8. 2007, 17:23:28
zdravim vsechny, potreboval bych funkci ktera mi zjisti pocet souboru (nebo fotek) ve slozce kterou si urcim, nebo nejaky zpusob jak to zjistit jinak... predem MOC dekuji za pomoc...
|
||
| nightfish Profil |
#2 · Zasláno: 27. 8. 2007, 17:35:01
$dir = opendir("adresar");
|
||
| papirek Profil * |
#3 · Zasláno: 27. 8. 2007, 17:39:11
Dekuji moc si mi pomohl ale jen tak pro zajimavost zatim sem vymyslel toto fungovalo by to taky ??
$dir = "adresar"; $soubory = scandir($dir); $pocetsouboru = count($soubory); echo "Počet souborů: ".$pocetsouboru |
||
| nightfish Profil |
#4 · Zasláno: 27. 8. 2007, 17:45:15
ale jen tak pro zajimavost zatim sem vymyslel toto fungovalo by to taky ??
scandir nerozlišuje soubory a adresáře, takže kdyby byl jenom adresář s fotkama, tak by to zřejmě fungovalo (tedy pro prázdný adresář by to vrátilo 2, kvůli souborům . a ..) |
||
|
Časová prodleva: 6 let
|
|||
| smiesek Profil |
#5 · Zasláno: 21. 3. 2013, 20:21:52
nightfish, nightfish:
Všude tu čtu pouze návo na výpis počtu souborů z jednoho adresáře, mě by zajímalo jak docílit toho, aby se mi zobrazil počet i z podadresářů/složek. Mám např. složku barvy, kde jsou další podsložky jako červená, modrá, bílá... a já chci, aby se mi spočítal celkový počet souborů z těch všech 3 složek. |
||
| Virtus Profil |
No tak stačí vzít ten kód co napsal nightfish v [#2] a udělat z něj rekurzivní funkci, asi nějak takhle:
function getCountFiles($adresar){
$dir = opendir($adresar);
$pocetSouboru = 0;
while (($f = readdir($dir)) !== false) {
if ($f == "." || $f == "..") continue;
if (is_file($adresar.$f)){
$pocetSouboru++;
} elseif( is_dir($adresar.$f) ) {
$pocetSouboru += getCountFiles($adresar.$f);
}
}
closedir($dir);
return $pocetSouboru;
}
echo "Počet souborů: ".getCountFiles('adresar'); |
||
| Alphard Profil |
#7 · Zasláno: 21. 3. 2013, 20:36:15
Virtus [#6]:
Do postupně sestavované cesty bude třeba nacpat nějaká lomítka. Navíc bude asi lepší použít nějakou funkci, která prohledává subadresáře nativně. |
||
| Virtus Profil |
Alphard [#7]:
Souhlasím, navíc by to asi chtělo spíš nějakou class než obyčejnou funkci, přece jen, pokud pracuju se soubory asi mně zajímá víc než jejich počet většinou, ale třeba i kolik jich je v konkrétních složkách, jaký mají práva, nebo zda se nejedná o symlinky atd. A ještě si nejsem jistý tou funkcí is_dir() pro kontrolu jestli se jedná o adresář, zda jde takhle vůbec použít viz. php.net: var_dump(is_dir('bogus_dir/abc')); |
||
| ShiraNai7 Profil |
Co takhle?
$item je instance SplFileInfo.
edit: zjednoduseno :) $adresar = './adresar';
$pocetSouboru = 0;
foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($adresar)) as $item) {
if($item->isFile()) {
++$pocetSouboru;
}
}
var_dump($pocetSouboru); // vypise pocet souboru |
||
| Majkl578 Profil |
[#9] ShiraNai7:
I to by se dalo zjednodušit (resp. zapsat bez foreache a přičítání proměnné): $pocet = iterator_count(
new CallbackFilterIterator(
new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($adresar)
),
function ($i) { return $i->isFile(); }
)
); |
||
|
Časová prodleva: 14 let
|
|||
0