Глава 26. Функции работы с файлами в PHP
Уже в самом начале развития компьютерной техники люди знали, что доступ к информации, содержащейся на компьютерах, будет производиться непосредственно через файлы. Файлы представляют собой совокупность имен, содержащихся на винчестере. В наши времена, получив такое широкое распространение, файлы заняли свое место в компьютерном мире. С развитием программного обеспечения, появлением все новых и новых редакторов, также происходит создание и новых типов файлов, но это уже другая тема, для которой, возможно, будет мало и книги.
Если есть файлы, то должны быть и средства работы с ними. Поэтому при написании какого-либо языка программирования обязательно уделяется внимание функциям, операциям или другим подходам для работы с файлами. Файл — это совокупность символов, имеющая свое расширение. Данная совокупность символов не может повторяться, поэтому каждый файл имеет имя, отличное от предыдущего. Конечно же, неотъемлемым атрибутом любого языка программирования помимо всего прочего является также и способность как можно более плотно взаимодействовать с файловыми операциями. Под файловыми операциями понимается всевозможное преобразование, копирование, получение размера, даты, чтение и т. д. необходимого файла. В Сети работа с файлами вообще является распространенным занятием, поэтому рассматриваемый язык не может быть обделен функциями работы с файлами.
РНР содержит развитую систему функций, работы с файлами. Программист, овладев данными функциями, сможет без каких-либо трудностей решить любую задачу, связанную с созданием программ, выполняющих работу с файлами. В этой главе рассмотрены следующие темы:
• получение пути файлов;
• копирование файлов;
• основные операции над файлами;
• чтение и проверка файлов;
• определение атрибутовфайлов;
• создание и удаление директории;
• доступ к строке файлового пути;
• получение информации офайле;
• создание уникального имени;
• установка времени модификации файла;
• разные функции.
26.1. Получение пути файлов
Перед тем, как производить какие-либо манипуляции с файлами, необходимо их получить — либо путь, либо самоимя файла. Для этой операциив РНР имеется две функции:
• basename(),
• dirname().
Когда вам известен полный путь к файлу и его имя, то получить строку с его именем помогает функция basename(). Функция возвращает не полный путь файла, а само имя файла с его расширением. Basename() имеет следующий синтаксис:
string basename (string path)
Вместо параметра path вписывается сам путь к файлу либо же переменная, содержащая этот путь. В результате выполнения функция возвратит строку с о значением имени файла. Например:
<?php
$path = "/dir/dir1/files/my.doc";
$file = basename($path);
$file1 = basename("/dir/dir1/files/my.doc");
$file2 = basename("dirdirlfilesmy.doc");
echo $file1."<br>";
echo $file."<br>";
echo $file2."<br>";
?>
Пример характеризует работу функции basename() во всех ее проявлениях. При первом вызове функции basename() в качестве параметра мы просто применили переменную, во втором случае вместо переменной вписали сам путь. Обратите внимание, что путь записывается в двойных кавычках. В третьем случае мы воспользовались функцией basename(), чтобы показать, как зависит изменение направления слеша.
ВНИМАНИЕ
Правила хорошего тона программирования в РНР подразумевают использование слеша только в таком направлении — . Хотя в Windows возможно использование как в прямом - так и в обратном - /.
Полученный результат:
Как видно, все имена получены верно независимо от способа задания параметров.
Когда возникает необходимость получить непосредственно путь без имени файла, т. е. совокупность каталогов, через которые необходимо пройти, чтобы добраться до желаемого файла, используется функция dirname(). Ее синтаксис:
string dirname (string path)
В этой функции вместо параметра path записывается путь к файлу либо переменная, значение которой указывает на путь к файлу. Например:
<?php
$path = "/dir/dirl/files/my.doc";
$file = dirname ($path);
$file1 = dirname ("/dir/dirl/files/my.doc");
$file2 = dirname ("dirdirlfilesmy.doc");
echo $file1."<br>";
echo $file."<br>";
echo $file2."<br>";
?>
В результате действия этой функции получается:
/dir/dirl/files
/dir/dirl/files
dirdirlfiles
Как видно, теперь вместо имен файлов получили путь кнему.
Третий способ указания пути является нерациональным и применять его на практике не рекомендуется. Приведен он здесь, только чтобы показать, что использование такого слеша не вызовет ошибки при написании скрипта.
Описанные нами функции используются в РНР 3 и PHP 4.