Уроки программирования на PHP. Работа с файлами.
Продолжаем, хоть и с запозданием, публикацию статей о web-программировании. Сегодня мы поговорим о работе с файлами и файловой системой вообще.
Директории
Для начала рассотрим наиболее тпичную задачу, о которой часто задают вопросы начинающие: "Как получить список файлов в определенной директории?", а так-же: "Как сосчитать количество файлов в директории?"
И так, начнем. В переменную $sPath занесем адрес директории
$sPath = '/путь/до/папки/';
Затем откроем директорию и присвоим переменной $dDir указатель на директорию (такую переменную еще называют дескриптором, например в Perl'е для этого существует специальный элемент, котрый по сути не является переменной, как в PHP, а именно дескриптор файла/директории)
$dDir = opendir($sPath);Имена файлов не будем выводить непосредственно, а занесем их в массив, на всякий случай. Объявим его:
$aFileList=array();
Теперь собственно сам цикл считывания
while ($sFileName=readdir($dDir))
{
if ($sFileName!='.' && $sFileName!='..')
{
$aFileList[]=$sFileName;
}
}
closedir ($dDir);
Подсчитаем количество файлов
$iNumFiles=count($aFileList);
Теперь можно выводить результаты
Колличество файлов
echo $iNumFiles;
и список файлов
print_r($aFileList);
Ну теперь весь фрагмент программы целиком:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php
|
Файлы
Следующая задача: "Как получить содержимое файла?". Это можно сделать разными способами, но мы рассмотрим лишь два из них, для большинства случаем их вполне достаточно.
Если нам нужно содержимое файла целиком, в виде строковой переменной, то нет ничего проще:
$sFileContent = file_get_contents('/путь/до/файла/имя.файла');
Следующей фукнцией мы получим массив из строк текстового файла.
$aFileLines=file('/путь/до/файла/имя.файла');
"Как сохранить данные в файл"
Если нужно сохранить строку.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php
|
Если нужно созранить массив, например полученный с помощью функции file(), то заменим строку №4 на
$sContent=implode('',$aFileLines);
Функцию implode() мы обсуждали в предыдущей статье.
Функции
Приведенные выше задачи являются типичными и частоиспользуемыми, по этому их лучше реализовать в виде функций
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php
|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php
|
Часто бывает необходимо сохранить файл в директорию которой еще не существует. Если путь короткий, то есть директория не имеет вложений, то делаем просто:
mkdir('./dir1/dir2/');
Но что делать если нам нужно сохранить файл в директорию dir1/dir2/dir3/ которой не существует, ни ее ни в вложенных в нее директорий? Ответ: напишем функцию, которая сделает за нас рутинную работу по прокладыванию нужного пути :)
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
<?php
|
В подробности работы этой функции вдаваться не будем, просто запомните, что она принимает два параметра
обязательный: $sPath - путь
необязательный: $chmod - права на директорию (для Unix-систем)
На этом пока закончим данную публикацию.
Перепечатка данного материала без согласия автора запрещена!