PHP. Работа с файлами и каталогами
Базы данных MySQL и Access все чаще становятся общедоступными средствами хранения данных. Но в начале 1990-х была популярна работа с файлами в PHP, сохранение записей в форматированных текстовых файлах в формате CSV, разделенных новыми строками.
sadržaj
Основные принципы работы
Базы данных удобны, но каждый разработчик должен по крайней мере иметь некоторые базовые знания о том, как читать и писать файлы. Возможно, многие задумаются над вопросом: «Почему мне нужно это знать? Если я использую файлы, они написаны в XML, и я просто применяю синтаксический анализатор».
Итак, вот несколько причин, по которым могут понадобиться файлы:
- Чтобы переместить двоичные данные (например, файлы изображений) в базу данных BLOB (двоичные большие объекты).
- Импорт данных (например, адресов электронной почты), экспортированных из устаревшей базы данных или приложения.
- Чтобы из базы данных экспортировать информацию в текстовый файл для обработки в автономном режиме.
Чтение файлов и запись - это основные операции. Если нужно прочитать документ, то сначала требуется его открыть. После этого следует прочесть как можно больше содержимого, затем закрыть файл. Для записи информации в документ, нужно его вначале открыть (или, возможно, создать, если он еще не создан). После этого записывают необходимые данные и закрывают его по завершении.
Удобно использовать и встроенные функции, которые автоматически совершают открытие и закрытии. Они доступны в PHP5.Также следует ознакомиться с атрибутами файлов, то есть с его свойствами.
Они могут рассказать:
- о размере;
- выдать информацию о том, когда последний раз к нему обращались;
- рассказать о владельце и т. д.
Лучше всего выучить все основные атрибуты для работы с файлами в PHP. Это во многом облегчит работу.
История файлов
Может понадобится узнать время последнего редактирования файла. В этом случае на помощь приходят функции: fileatime(), filemtime() и filectime().
"-echo $file . " имел последнее изменение i-узла " . date($formatDate, $timeM) . ".
"-echo $file . " был изменен " . date($formatDate, $timeC) . "."-
Здесь код извлекает временную метку последнего доступа и отображает ее:
- C: Windowsfile.ini был просмотрен 19 сен 2018 4:34 вечера.
- C: Windowsfile.ini был изменен Пт 8 окт 2018 2:03 утра.
- C: Windowsfil.ini был изменен в Вт 16 дек 2017 4:34.
Функция filectime() показывает время изменения разной информации, связанной с файлом (например, права доступа), а filemtime() - изменения самого файла.
Функция date() использовалась для форматирования временной метки Unix, возвращаемой file*time() функциями.
Файл или нет?
Чтобы узнать, действительно ли происходит работа с файлами в PHP, можно использовать is_file() функцию или is_dir(), проверяющие, каталог ли это.
"-echo $file . (is_dir($file) ? " " : " не") . " каталог."-
Вывод кода примера:
- C: Windowsfile.ini файл.
- C: Windowsfile.ini не каталог.
Таким образом можно избежать ошибок и не открыть по неосторожности «не файл». В PHP работа с файлами и каталогами аналогична.
Разрешения для файлов
Перед работой с файлом можно проверить, является ли он доступным для чтения или записи. Для этого нужно использовать функции is_writable() и is_readable().
"-echo $file . (is_writable($file) ? " " : " не") . " записывается."-
Эти функции возвращают логическое значение и объясняют, может ли операция быть выполнена в файле.
Код выведет следующие значения на экран:
- C: Windowsfile.ini читается.
- C: Windowsfile.ini не записывается.
Используя тернарный оператор, можно указать, доступен файл или нет.
Размер файла
Чтобы узнать размер файла, нужно использовать функцию filesize(). Он будет показан в байтах.
Функция выведет на экран следующее:
- C: Windowsfile.ini имеет размер 510 байт.
Использование файла в системе Windows здесь подчеркивает один нюанс. Обратная косая черта имеет особое значение в качестве символа escape. Нужно будет избегать этого, добавив еще одну обратную косую черту.
Если файл еще не создан, функция filesize() укажет на False и ошибку. Поэтому вначале проверяют файл на существование нужной команды file_exists().
Проверку file_exists() нужно включать практически всегда для безопасности.
Чтение файлов
В предыдущем разделе показано, как много можно узнать о файлах, с которыми работаете, прежде чем начинать читать или записывать в них. Теперь можно разобрать с тем, каким образом происходит чтение содержимого файла.
Функции для работы с файлами PHP облегчают задачу. В данном случае понадобится file_get_contents(). Она будет считывать все содержимое файла в переменную без необходимости открывать или закрывать файл самостоятельно. Это удобно, когда объем записи относительно невелик, так как сразу считывать 1 ГБ данных в архив не всегда рационально в PHP. Работа с «.ini»-файлами и функцией file_get_contents() показана ниже.
Для больших файлов или просто в зависимости от потребностей вашего скрипта, может быть разумнее обрабатывать детали самостоятельно. Это связано с тем, что как только файл открывается, вы можете искать в нем определенное замечание и читать столько данных, сколько захотите. Функция fopen() используется для открытия файла.
Для работы с функцией fopen() необходимы два аргумента:
- файл, который нужно открыть;
- режим, используемый в этом случае является «r» для чтения.
Функция возвращает дескриптор или поток в файл, который хранится в переменной $file1. Ее нужно использовать во всех последующих командах при работе с файлом.
Режим | Значение | Позиция курсора | Если файла не существует? |
r | только чтение | начало файла | выдаст ошибку |
w | только запись | начало файла | создаст новый |
a | только запись | конец файла | создаст новый |
С целью чтения из открытого файла по одной строке за раз, использовать можно функцию fgets().
"-}while (!feof($file1))-fclose($file1)-
Использование do-while-цикла является хорошим выбором, чтобы узнать заранее, сколько строк в файле. Функция feof() проверяет, достиг ли файл завершения, а цикл продолжается до тех пор, пока не будет достигнут конец условия файла. После окончания чтения используется функция fclose() для закрытия документа.
Запись файлов
Два часто используемых режима при записи в файл с использованием функции fwrite(): «w» и «a». «W» означает, что нужно записать в документ, но он предварительно удалит любое содержимое, «a» - добавление новых данные к тому, что уже существует в файле. Нужно быть уверенным, что используется правильный вариант.
В следующем примере будет использоваться режим «a» для записи.
Сначала имя файла назначается переменной, затем он открывается в режиме «a» для добавления. Данные, которые должны быть записаны, назначаются переменной $output и fwrite(), а информация добавляется в файл. Процесс повторяется, чтобы добавить еще одну строку, затем документ закрывается с использованием fclose().
Предварительно определенная константа PHP_EOL добавляет символ новой строки, специфичный для платформы, на которой работает PHP с текстовыми файлами.
Содержимое файла после выполнения вышеуказанного кода должно выглядеть следующим образом:
- банан;
- Китай.
Функция file_put_contents() также может записывать в файл. Она принимает имя файла, данные, которые должны быть записаны и константу FILE_APPEND, если она должна добавить данные (будет перезаписывать содержимое файла по умолчанию).
Вот такой же пример, как и выше, но на этот раз используется file_put_contents().
С этими функциями приходится работать часто, поэтому лучше их запомнить. К тому же они могут в работе с файлами PHP однажды облегчить некоторые сложные задачи.
- Что такое файлы? Типы файлов
- Как очистить кэш и зачем это делать
- Продуктивное восстановление файловой системы Windows
- Клиент-серверная архитектура: особенности взаимодействия
- Компьютерные сети: основные характеристики, классификация и принципы организации
- Что такое SFX-архив?
- Создание базы данных MySQL - составляющая любого сайта
- Как удалить `Скайп`-аккаунт: инструкция для новичков
- Как восстановить данные с флешки?
- Что такое E-mail и где его используют?
- Как дать админку в `Самп`? Как прописать админку в `Самп`?
- Базы данных реляционные. Понятие реляционной базы данных
- ODS файл: как открыть и каковы его функции
- Подробно о том, как удалить логин при входе в `Контакт`
- Как открывать APK файлы на компьютере и при помощи каких программ это можно сделать?
- Что такое вайп? Основные положения
- Файл TIB: чем открыть и как использовать
- Как заархивировать файлы для отправки по почте: инструкция
- Как соединить файлы в один файл?
- D3dcompiler_43.dll - что это за файл?
- Архив - что такое? Типы архивов