Читайте также:
|
|
Для открытия файла в среде РНР используется функция
fopen(имя_файла, режим_файла)
При открытии файла необходимо указать, как его предполагается использовать. Это называется режимом файла. Серверная операционная система должна знать, что нужно делать с открытым файлом. Режимы файла предоставляют операционной системе механизм для определения способа обработки запросов на доступ, поступающих от пользователей или сценариев, а также метод проверки наличия доступа и прав для работы с конкретным файлом.
Первым параметром функции fopen() должно быть имя файла, который необходимо открыть, вторым — код режима, который может принимать следующие значения:
Режим | Описание |
r | Файл открывается только для чтения. Если файла не существует, вызов регистрирует ошибку. После удачного открытия указатель файла устанавливается на его начало; |
r+ | Файл открывается одновременно на чтение и запись. Указатель текущей позиции устанавливается на его начало. Как и для режима r, если файла не существует, возвращается false. Следует отметить, что если в момент записи указатель файла установлен где-то в середине файла, то данные запишутся прямо поверх уже имеющихся, а не "раздвинут" их, при необходимости увеличив размер файла. Будьте внимательны; |
w | Открывает файл только для записи и помещает указатель в начало файла. Если файл не существует создает новый пустой файл. Если на момент вызова уже был файл с таким именем, то он предварительно уничтожается. В случае неверно заданного имени файла вызов, как нетрудно догадаться, "проваливается"; |
w+ | Аналогичен r+ открывает файл только для записи и помещает указатель в начало файла, но если файла изначально не существовало, создает его. После этого с файлом можно работать как в режиме чтения, так и записи. Если файл существовал до момента вызова, его содержимое удаляется; |
a | Открывает существующий файл только для записи, и при этом сдвигает указатель текущей позиции за последний байт файла. Этот режим полезен, если требуется что-то дописать в конец уже имеющегося файла. Как водится, вызов неуспешен в случае отсутствия файла; |
a+ | Открывает файл для чтения и записи, указатель файла устанавливается на конец файла, при этом содержимое файла не уничтожается. Отличается от a тем, что если файла изначально не существовало, то он создается. Этот режим полезен, если вам нужно что-то дописать в файл (например, в журнал), но вы не знаете, создан ли уже такой файл; |
x | Создает и открывет файл только для записи; помещает указатель в начало файла. Если файл уже существует, вызов fopen() закончится неудачей. Если файл не существует попытается его создать. |
x+ | Создает и открывет файл для чтения и записи; помещает указатель в начало файла. Если файл уже существует, вызов fopen() закончится неудачей. Если файл не существует попытается его создать. |
При работе в операционной системе Windows также можно явно указать, содержит ли файл двоичные (b) или текстовые (t) данные. В этом случае следует добавить "b" или "t" к строке режима. Если вы записываете текстовые данные в файл Windows и укажите режим "a+t", то строки будут разделяться символами \n\r, как и положено Windows.
В случае удачного открытия файла, функция fopen() возвращает дескриптор файла, в случае неудачи - false. Дескриптор файла представляет собой указатель на открытый файл, который используется операционной системой для поддержки операций с этим файлом. Возвращенный функцией дескриптор файла необходимо затем указывать во всех функциях, которые в дальнейшем будут работать с этим файлом.
Пример:
<?php
$fl = fopen ("170.php", "r"); //возвращает Resource id #3
if (! $fl)
{
echo "Ошибка при открытии файла";
}
echo $fl;
?>
Открытие двоичного файла, к примеру, рисунка происходит таким же образом, только с флагом b:
<?php
$fl = fopen ("images/foto15.g if ", "rb"); //возвращает дескриптор Resource id #3
if (! $fl)
{
echo "Ошибка открытия файла";
}
echo $fl;
?>
Дата добавления: 2015-08-18; просмотров: 76 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Обработка ошибок и исключений в PHP | | | Работа с БД MySQL через расширение mysql |