Функції файлової системи
Nette\Utils\FileSystem це клас, який містить корисні функції для роботи з файловою системою. Однією з переваг перед нативними функціями PHP є те, що вони генерують виключення у випадку помилок.
Якщо вам потрібно знайти файли на диску, скористайтеся Finder.
Встановлення:
Наступні приклади припускають, що визначено наступний псевдонім класу:
Маніпуляція
copy(string $origin, string $target, bool $overwrite=true): void
Копіює файл або цілий каталог. За замовчуванням перезаписує існуючі
файли і каталоги. Якщо $overwrite
встановлено на false
і вже
існує $target
, згенерує виключення Nette\InvalidStateException
. Згенерує
виключення Nette\IOException
у разі виникнення помилки.
createDir(string $directory, int $mode=0777): void
Створює каталог, якщо він не існує, включаючи батьківські каталоги.
Згенерує виключення Nette\IOException
у разі виникнення помилки.
delete(string $path): void
Видаляє файл або весь каталог, якщо він існує. Якщо каталог не
порожній, спочатку видаляється його вміст. Згенерує виключення
Nette\IOException
у разі виникнення помилки.
makeWritable(string $path, int $dirMode=0777, int $fileMode=0666): void
Встановлює права доступу до файлу $fileMode
або до каталогу
$dirMode
. Рекурсивно переглядає і встановлює дозволи на весь вміст
каталогу.
open(string $path, string $mode): resource
Відкриває файл і повертає ресурс. Параметр $mode
працює так само,
як і рідна функція fopen()
. Якщо
виникає помилка, згенерує виключення Nette\IOException
.
read(string $file): string
Читає вміст $file
. При виникненні помилки генерує виключення
Nette\IOException
.
readLines(string $file, bool $stripNewLines=true): \Generator
Читає вміст файлу рядок за рядком. На відміну від стандартної функції
file()
, вона не зчитує весь файл у пам'ять, а читає його безперервно,
що дає змогу читати файли, розмір яких перевищує обсяг доступної
пам'яті. Функція $stripNewLines
визначає, чи потрібно вилучати символи
переходу на новий рядок \r
і \n
. У разі помилки вона
згенерує виключення Nette\IOException
.
rename(string $origin, string $target, bool $overwrite=true): void
Перейменовує або переміщує файл або каталог, вказаний командою
$origin
, до $target
. За замовчуванням перезаписує існуючі файли
і каталоги. Якщо $overwrite
задано як false
, а $target
вже
існує, згенерує виключення Nette\InvalidStateException
. Згенерує виняток
Nette\IOException
у разі виникнення помилки.
write(string $file, string $content, int $mode=0666): void
Записує $content
в $file
. Згенерує виключення
Nette\IOException
про виникнення помилки.
Шляхи
isAbsolute(string $path): bool
Визначає, чи є $path
абсолютним.
joinPaths(string …$segments): string
Об'єднує всі відрізки шляху і нормалізує результат.
normalizePath(string $path): string
Нормалізує ..
і .
та роздільники каталогів у шляху.
unixSlashes(string $path): string
Перетворює слеші на /
, що використовується у системах Unix.
platformSlashes(string $path): string
Перетворює косі риски на символи, характерні для поточної платформи,
наприклад, \
у Windows і /
в інших системах.
resolvePath(string $basePath, string $path): string
Отримує кінцевий шлях з $path
відносно базового каталогу
$basePath
. Абсолютні шляхи (/foo
, C:/foo
) залишаються без
змін (нормалізує лише слеші), відносні шляхи додаються до
базового шляху.
Статичний vs нестатичний підхід
Щоб легко замінити клас FileSystem
іншим класом, наприклад, для
тестування, використовуйте його нестатично: