Языки программирования

PHP. Работа с файлами

Под работой с файлами в PHP подразумевается чтение из файла и запись в файл различной информации. Работать с файлами в PHP приходится много, поэтому любой программист обязан уметь считывать из файла и записывать в файл. Работа с файлами не является сложной задачей, и я Вам помогу разобраться.

Работа с файлами разделяется на 3 этапа:

1. Открытие файла.

2. Манипуляции с данными.

3. Закрытие файла.

Прежде чем работать с файлом, желательно убедитесь в том, что он существует. Для решения этой задачи обычно используются две функции: file_exists() и is_file().

file_exists()

Функция filе_ехists() проверяет, существует ли заданный файл. Если файл существует, функция возвращает TRUE, в противном случае возвращается FALSE. Синтаксис функции:
bool file_exists(string файл)
Пример проверки существования файла:
if(! file_exists($filename)) :
  print "File $filename не существует!";
endif:
  is_file()
is_file()

Функция is_file() проверяет существование заданного файла и возможность выполнения с ним операций чтения/записи. Синтаксис функции:
bool is_file(string файл)
Пример проверки существования файла и возможность операций с ним:
$file = "Coolfile.txt";

if(is_file($file)) :
  print "Файл $file является доступным, операции разрешены!";
else :
  print "Файл $file не существует, или он не является доступным файлом!";
endif:
Существование файлов мы проверили, теперь приступим к работе с файлами.

Открытие и закрытие файла

Для того чтобы открыть файл в среде PHP используется функция fopen(). Обязательными параметрами этой функции является имя файла и режим файла.
$fp = fopen('counter.txt', 'r+'); // r+ - режим файла
Согласно документации PHP выделяют следующие виды режимов файлов:

  • r – открытие файла только для чтения.
  • r+ — открытие файла одновременно на чтение и запись.
  • w – создание нового пустого файла. Если на момент вызова уже существует такой файл, то он уничтожается.
  • w+ — аналогичен r+, только если на момент вызова фай такой существует, его содержимое удаляется.
  • a – открывает существующий файл в режиме записи, при этом указатель сдвигается на конец файла.
  • a+ — открывает файл в режиме чтения и записи при этом указатель сдвигается на конец файла. Содержимое файла не удаляется.

Функция fclose() закрывает файл с заданным манипулятором. При успешном закрытии возвращается TRUE, при неудаче — FALSE. Синтаксис функции:
int fclose(int манипулятор)
Функция fclose() успешно закрывает только те файлы, которые были ранее открыты функциями fopen() или fsockopen(). Пример:
$file = "user.txt";

if(file_exists($file)) :
  $fh = fopen($file, "r");
  // Выполнить операции с файлом

  fclose($fh);
else :
  print "Файл $file не существует!";
endif;

Манипуляции с данными файла

Записывать данные в файл можно при помощи функции fwrite(). Функция принимает 2 обязательных параметра и 1 необязательный. В качестве обязательных параметров выступает дескриптор файла и режим файла. Пример:
$fp = fopen("counter.txt", "a"); // Открываем файл в режиме записи 
$mytext = "Это строку необходимо нам записать\r\n"; // Исходная строка
$test = fwrite($fp, $mytext); // Запись в файл
if ($test) echo 'Данные в файл успешно занесены.';
else echo 'Ошибка при записи в файл.';
fclose($fp); //Закрытие файла
Функция fread() читает из файла, заданного файловым манипулятором, заданное количество байт. Синтаксис функции
int fread(int манипулятор, int длина)
Манипулятор должен ссылаться на открытый файл, доступный для чтения. Чтение прекращается после прочтения заданного количества байт или при достижении конца файла. Пример:
$fp = fopen("counter.txt", "r"); // Открываем файл в режиме чтения
if ($fp) echo fread($fp);
elseecho "Ошибка при открытии файла";

filesize()

Функция filesize() возвращает размер (в байтах) файла с заданным именем или FALSE в случае ошибки. Пример:
$fs = filesize("pastry.txt"); print "Pastry.txt состовляет $fs байт.";

Чтение файла в массив

Функция file() загружает все содержимое файла в индексируемый массив. Каждый элемент массива соответствует одной строке файла. Пример:
$file_array = file( "pastry.txt" );

while( list( $line_num. $line ) = eacht($file_array ) ):
  print "<b>Line $line_num:</b> ", htmlspecialchars($line ), "<br>\n"
endwhile;

Запуск внешних программ

Сценарии РНР также могут выполнять программы, находящиеся на сервере. Такая возможность особенно часто используется при администрировании системы через web-браузер, а также для более удобного получения сводной информации о системе.
Функция ехес() запускает заданную программу и возвращает последнюю строку ее выходных данных. Синтаксис:
string exec(string команда [, string массив [, int возврат]])

Копирование и переименование файлов

К числу других полезных системных функций, которые могут выполняться в сценариях РНР, относятся копирование и переименование файлов на сервере. Эти операции выполняются двумя функциями: сору() и rename().

Функция сору().

int copy(string источник, string приемник)
Функция сору() пытается скопировать файл источник в файл приемник; в случае успеха возвращается TRUE, а при неудаче — FALSE. Если файл приемник не существует, функция сору() создает его. Следующий пример показывает, как создать резервную копию файла при помощи функции сору():
$data_file = "datal.txt";
copy($data_file. $data_file'.bak') or die("Could not copy $data_file");

rename()

Функция rename() переименовывает файл. В случае успеха возвращается TRUE, a при неудаче — FALSE. Пример:
$data_file = "datal.txt";
rename($data file, $datafile'.old') or die("Невозможно переименовать $data файл");

Удаление файлов

Функция unlink() удаляет файл с заданным именем. Синтаксис:
int unlink(string файл)
На этом наш урок закончен. Я постарался подробно в примерах объяснить как работать с файлами в php. Удачи!!.
Самоучитель по PHP