PHP скрипты

MySQL

Apache

phpMyADmin

11.1: Открытие файлов в PHP

Главная Страница » Самоучитель PHP 5 для чайников с примерами » Открытие файлов

Огромное количество данных, пожалуй, не найдешь ни в одной библиотеке мира, кроме как в сети Internet. И все это благодаря возможности постоянно обмениваться информацией. Организация хранения данных всегда была и будет одной из основных задач не только программирования, но и других областей. В сети Internet для этого обычно используют файлы и базы данных. Несмотря на то что базы данных являются более удобными хранилищами данных, файлы до сих пор не утратили своей актуальности. Тем более что при малых количествах информации (счетчик посещений, гостевая книга) лучше использовать именно файлы, так как применение баз данных в этом случае будет похоже на стрельбу из пушки по воробьям.

Файл - это именованная область на носителе информации. Обычно файлы делятся на текстовые и бинарные. Текстовые файлы состоят из строк, которые заканчиваются переводом строки. Бинарные соответственно имеют иную структуру.

Открытие файлов

Чтобы начать работу с файлом, его нужно открыть. Для этого обычно применяют функцию fopen() - листинг 11.1.

Листинг 11.1. Открытие файла для чтения.

‹?php
// открытие файла для чтения
$file_pionter = fopen ("info.txt", "r");
?›

В качестве входных параметров функции fopen() выступает строка с именем файла и специальный признак, по которому определяется режим открытия файла (об этом чуть позже). В данном случае если файла не существует, то выведется сообщение об ошибке. Функция возвращает дескриптор файла, который имеет значение типа source. В случае неудачной попытки открытия файла она возвратит FALSE.

Вернемся ко второму параметру, который, как мы говорили, указывает режим открытия файла. В приведенном примере r означает то, что файл открывается только для чтения, то есть мы не сможем его изменять. Описания основных режимов открытия файлов смотрите в таблице ниже.

Режим Описание
r Файл открывается только для чтения. При попытке открыть несуществующий файл выводится сообщение об ошибке. Если файл открылся удачно, то указатель текущей позиции устанавливается в начало.
r+ Файл открывается одновременно для чтения и записи. Указатель текущей позиции устанавливается в начало файла. При этом запись в файл будет происходить поверх уже существующих данных, поэтому будьте осторожны при работе в этом режиме.
w Файл открывается для записи. При этом все данные, которые были в нем, уничтожаются. Если файла с таким именем не существует, то он создается.
w+ Действия аналогичные режиму w, но файл открывается для чтения и для записи.
a Файл открывается для записи. При этом его указатель устанавливается в конец файла. Если файла не существует, то выводится сообщение об ошибке.
a+ Файл открывается для чтения и записи. При этом его указатель устанавливается в конец файла. Если файла не существует, то он создается.

Рассмотрим более подробно параметр, указывающий имя файла. В приведенном примере подразумевается, что файл info.txt, находится в одной папке с файлом PHP-сценария. Если файл имеет иное расположение, то нужно задать соответствующие папки (листинг 11.2).

Листинг 11.2. Открытие файла для чтения и записи.

‹?php
// путь указывается относительно корневой папки Web-сервера
// в этом случае это C:\Home_server\Apache2\htdocs
$file_pionter = fopen ("files/data/info.txt", "r+");
?›

Также вы можете задать абсолютный путь к файлу, хотя это не рекомендуется (листинг 11.3).

Листинг 11.3. Открытие файла для чтения и записи с указанием абсолютного пути

‹?php
// задаем абсолютный путь
$file_pionter = fopen ("C:\\Home_server\\files\\info.txt", "r+");
?›

Заметьте, что для корректного задания пути символ \ должен удваиваться.

Также функция fopen () позволяет открывать файлы, находящиеся на других серверах. Происходит это посредством протоколов HTTP и FTP (листинг 11.4).

Листинг 11.4. Открытие файла для чтения посредством протоколов HTTP и FTP

‹?php
// соединение с http сервером
$http_fp = fopen ("http://www.php.net/" "r");
// соединение с ftp сервером
$ftp_fp = fopen ("ftp://user:password@example.ru/info.txt", "w");
?›

При работе через HTTP и FTP протоколы нужно учитывать несколько особенностей. Например, если используется HTTP-соединение, то файл можно открыть только для чтения, а при FTP - нельзя одновременно открыть файл для чтения и записи.

Поделиться с друзьями