Skip to content

Třída FileInfo

Utility pro načítání metainformací o souborech. Statická třída s metodami pro zjištění velikosti, oprávnění, vlastníka a času změny.


Klíčové metody

Metoda Popis
getFileInfo(string $source): array Vrať všechny metainformace
getFileSize(string $source): int\|float Vrať velikost v bytech
getReadableSize(float\|int $size, ?string $format = null): string Vrať velikost čitelně
formatSize(float\|int $size, ?string $format = null): string Formátuj velikost s jednotkami
getReadablePerms(string $file): string Vrať oprávnění v Unix notaci
getOwner(string $file): string\|false Vrať jméno vlastníka
getGroup(string $file): string\|false Vrať jméno skupiny
datetime(string $file): string Vrať čas modifikace

Metody

FileInfo::getFileInfo(string $source): array

Vrátí všechny metainformace o souboru v jednom volání.

Návratová hodnota:

[
    'datetime' => '01.01.2024 14:30',  // Formátovaný čas
    'size'     => '2.50 MB',            // Čitelná velikost
    'owner'    => 'www-data',           // Vlastník (nebo false na Windows)
    'group'    => 'www-data',           // Skupina (nebo false na Windows)
    'perms'    => '-rw-r--r--',        // Unix notace
]

Příklad:

use Petrovo\FileSystem\FileInfo;

$info = FileInfo::getFileInfo('/var/www/document.pdf');
echo $info['size'];   // 2.50 MB
echo $info['perms'];  // -rw-r--r--
echo $info['owner'];  // www-data


FileInfo::getFileSize(string $source): int|float

Vrátí velikost souboru v bytech.

Návratová hodnota:

  • Počet bajtů

Příklad:

use Petrovo\FileSystem\FileInfo;

$bytes = FileInfo::getFileSize('/var/www/file.pdf');
echo $bytes;  // 2621440 (pro 2.5 MB)


FileInfo::getReadableSize(float|int $size, ?string $format = null): string

Konvertuje velikost v bytech na čitelný formát.

Parametry:

  • $size – velikost v bytech
  • $format (optional) – sprintf format string (default: '%01.2f %s')

Návratová hodnota:

  • Formátovaný string (např. '2.50 MB')

Příklad:

use Petrovo\FileSystem\FileInfo;

echo FileInfo::getReadableSize(1024);        // 1 kB
echo FileInfo::getReadableSize(1048576);     // 1 MB
echo FileInfo::getReadableSize(2621440);     // 2.50 MB

// Vlastní formát
echo FileInfo::getReadableSize(2621440, '%.1f %s');  // 2.5 MB


FileInfo::formatSize(float|int $size, ?string $format = null): string

Formátuje velikost se správnými jednotkami.

Jednotky:

  • B (baity)
  • kB (kilobaity)
  • MB (megabaity)
  • GB (gigabaity)
  • TB, PB, EB, ZB, YB

Chování:

  • Pro celé číslo vrací bez desetinných míst (např. 5 MB)
  • Pro desetinná čísla vrací s 2 místy (např. 2.50 MB)

Parametry:

  • $size – velikost v bytech
  • $format – sprintf format (default: '%01.2f %s')

Příklad:

use Petrovo\FileSystem\FileInfo;

echo FileInfo::formatSize(512);           // 512 B
echo FileInfo::formatSize(1024);          // 1 kB
echo FileInfo::formatSize(1024 * 1024);   // 1 MB
echo FileInfo::formatSize(1536 * 1024);   // 1.50 MB


FileInfo::getReadablePerms(string $file): string

Vrátí oprávnění souboru v Unix notaci (jako ls -l).

Formát:

  • První znak: typ (- file, d dir, l link, atd.)
  • Znaky 2-4: owner (rwx)
  • Znaky 5-7: group (rwx)
  • Znaky 8-10: others (rwx)

Příklad:

use Petrovo\FileSystem\FileInfo;

echo FileInfo::getReadablePerms('/var/www/file.txt');  // -rw-r--r--
echo FileInfo::getReadablePerms('/var/www');           // drwxr-xr-x


FileInfo::getOwner(string $file): string|false

Vrátí jméno vlastníka souboru.

Poznámka: Na Windows vrátí false (funkce POSIX nejsou dostupné).

Návratová hodnota:

  • Jméno vlastníka (string) nebo false pokud není dostupné

Příklad:

use Petrovo\FileSystem\FileInfo;

$owner = FileInfo::getOwner('/var/www/file.txt');
echo $owner;  // www-data (nebo false na Windows)


FileInfo::getGroup(string $file): string|false

Vrátí jméno skupiny souboru.

Poznámka: Na Windows vrátí false.

Návratová hodnota:

  • Jméno skupiny (string) nebo false pokud není dostupné

Příklad:

use Petrovo\FileSystem\FileInfo;

$group = FileInfo::getGroup('/var/www/file.txt');
echo $group;  // www-data (nebo false na Windows)


FileInfo::datetime(string $file): string

Vrátí čas poslední modifikace souboru.

Formát: 'd.m.Y H:i' (např. '15.01.2024 14:30')

Příklad:

use Petrovo\FileSystem\FileInfo;

echo FileInfo::datetime('/var/www/file.txt');  // 15.01.2024 14:30


Praktické příklady

Výpis informací o souboru

use Petrovo\FileSystem\FileInfo;

$file = '/var/www/document.pdf';
$info = FileInfo::getFileInfo($file);

echo "Soubor: document.pdf\n";
echo "Velikost: " . $info['size'] . "\n";
echo "Oprávnění: " . $info['perms'] . "\n";
echo "Vlastník: " . ($info['owner'] ?? 'N/A') . "\n";
echo "Skupina: " . ($info['group'] ?? 'N/A') . "\n";
echo "Upraveno: " . $info['datetime'] . "\n";

Kontrola velikosti souboru

use Petrovo\FileSystem\FileInfo;

$file = '/var/www/upload.zip';
$size = FileInfo::getFileSize($file);

if ($size > 100 * 1024 * 1024) {  // > 100 MB
    echo "Soubor je příliš velký!";
} else {
    echo "Velikost: " . FileInfo::getReadableSize($size);
}

Výpis oprávnění

use Petrovo\FileSystem\FileInfo;

$perms = FileInfo::getReadablePerms('/var/www/file.txt');
// Vrátí: '-rw-r--r--'

// Rozebírání:
// - : regular file
// rw- : owner může číst a psát
// r-- : group může jen číst
// r-- : others mohou jen číst

Shrnutí

Třída FileInfo je určena pro čtení metainformací. Všechny metody jsou read-only. Pro změnu oprávnění používej FileSystem::changePermissions().