Модуль 12. Работа с файлами Flashcards
Функция file($fileToRead)
Функция file позволяет получить содержимое файла, при этом эта функция возвращает массив, где каждый
элемент - это отдельная строка такого файла. символ переноса строки
также сохраняется. С помощью функции trim его можно убрать из строки.
Функция file_get_contents($fileToRead);
функция для получения содержимого всего файла. В отличие от предыдущей функции, эта возвращает содержимое в виде строки.
функция readfile($fileToRead)
функция считывает содержимое файла и сразу же его
выводит
Функция file_put_contents($fileToWrite, $content);
Функция для записи данных в файл. У этой функции четыре параметра.
Первый - абсолютный путь к файлу, в который нужно осуществить запись. Второй - строка, которую нужно
записать в файл. Третий - это дополнительные параметры для записи. Четвертый - используется для записи в другой
поток, мы его не будем использовать.
Если третий параметр не указан то файл будет полностью перезаписан, параметр указывается в виде константы например
FILE_APPEND
Функции проверки файла
С помощью этих функций можно проверить, существует ли файл, является он файлом или директорией
is_dir($file)
is_file($file)
file_exists($file)
Функция для получения информации о файле ?
функция pathinfo($file) возвращает информацию о файле в виде ассоциативного массива
[dirname] => /dir/to/file
[basename] => example.txt
[extension] => txt
[filename] => example
Функция копирования файла
С помощью функции copy($file, $secondFile); можно скопировать файл, т.е. создать новый файл с тем же содержимым, что и
исходный файл.
Перемещения файла в директории
Функция rename($secondFile, $thirdFile); позволяет переместить файл на новое место.
Как удалить файл
Для удаления файла используется функция unlink($file)
получить родительскую директорию у файла
Получить путь к родительской директории сожно функцией dirname($baseDir)
Во втором параметре можно передать уровень родителькой директории
фукнция scandir($baseDir)
представляет собой простой способ получить названия всех файлов и директорий по
указанному пути, т.е. считывает содержимое директории.
Поток
Поэтапное чтение содержимого файла. Сначала создается поток и потом происходит работа с файлами
Создание потока
Для создания потока используется функция fopen($fileToRead, ‘r’);
Эта функция принимает четыре параметры, мы рассмотрим только два из них, первый - абсолютный путь к
файлу, второй модификатор, который определяет для каких действий будет открыт файл.
$fileToRead = $baseDir . DIRECTORY_SEPARATOR . ‘example.txt’;
$stream = fopen($fileToRead, ‘r’);
Модификаторы при создании потока
‘r’ Открывает файл только для чтения; помещает указатель в начало файла.
‘r+’ Открывает файл для чтения и записи; помещает указатель в начало файла.
‘w’ Открывает файл только для записи; в противном случае ведёт себя так же, как и ‘w+’.
‘w+’ Открывает файл для чтения и записи; помещает указатель в начало файла и обрезает файл до нулевой длины. Если
файл не существует - пытается его создать.
‘a’ Открывает файл только для записи; помещает указатель в конец файла. Если файл не существует - пытается его
создать. В данном режиме функция fseek() не применима, записи всегда добавляются в конец.
‘a+’ Открывает файл для чтения и записи; помещает указатель в конец файла. Если файл не существует - пытается его
создать. В данном режиме функция fseek() влияет только на позицию чтения, записи всегда добавляются в конец.
‘x’ Создает и открывает только для записи; помещает указатель в начало файла. Если файл уже существует, вызов
fopen() закончится неудачей, вернёт false и выдаст ошибку уровня E_WARNING. Если файл не существует,
попытается его создать. Это эквивалентно указанию флагов O_EXCL|O_CREAT для внутреннего системного
вызова open(2).
‘x+’Создает и открывает для чтения и записи; в остальном имеет то же поведение, что и ‘x’.
Чтение файла в потоке по байтам
функция fread позволяет считать из потока
указанное число байт.
$content = fread($stream, filesize($fileToRead));
При чтении файла указатель будет смещаться на последнее место с которого было чтение
Перемещение указателя в потоке
Функция fseek($stream, 0); перемещает указатель, при указании 0 перемещает его в начало
Построчное чтение файла в потоке
с помощью функции stream_get_line считывать содержимое файла, до тех пор пока не достигнем символа переноса строки или окончания файла.
while ($line = stream_get_line($stream, 0, PHP_EOL)) {
echo $line . PHP_EOL;
}
С помощью второго параметра можно ограничить количество считываемых байт, 0 - без ограничений. А
третий параметр определяет символ переноса строки.
Закрытие потока
Чтобы закрыть поток нужно воспользоветься функцией fclose($stream)
Запись в файл в потоке
для записи используется функция fwrite()
for ($i = 0; $i < 3; $i++) {
fwrite($stream, ‘line ‘ . $i . PHP_EOL);
}
CSV
обычные текстовые файлы, со специальной
структурой, благодаря которым можно хранить и передавать структурированные данные.
Структура CSV файла
Первая строка задает заголовки полей
дальше кажадая запись указывается через разделитель
Если запись большая и трьуется перенос строки то она указывается в ковычках
name;email;age
“User 1”;user1@example.com;13
Чтение данных из csv файла
$keys = fgetcsv($stream, 0, ‘;’, ‘”’);
Фукнция проходит по каждой записи в истории по указанным параметрам. При этом каждая строка сразу преобразуется в обычный нумерованный массив.
Запись в csv файл
fputcsv($stream, array_keys($newUser), ‘;’, ‘”’);
Функция записывает данные в файл, данные передаются в виде массива который преобразуется в строку и записывается в файл
Потоковое чтение директории
функция dir. Она в свою очередь возвращает встроенный в PHP объект Directory. С его помощью можно постепенно считывать данные из директории.
$directory = dir($baseDir);
while ($file = $directory->read()) {
echo $file . PHP_EOL;
}
Синтаксис JSON
Для определения массивов используются квадратные скобки, а для определения объектов фигурные. Ключи
отделяются от значений двоеточием. Сами ключи должны быть указаны в двойных кавычках, значения могут быть
и строками, и цифрами, и массивами, и другими объектами.
преобразования данных в JSON-строку
json_encode($data);
парсинга JSON строки и формировании массива данных из нее.
json_decode($encodedString);
При таком преобразовании в массивы будет сконвертированы только массивы JSON, но не объекты. Объекты
будут преобразованы во встроенный в PHP объект класса stdClass, а поля будут свойствами этого объекта.
Но функция json_encode принимает второй параметр boolean, с помощью которого можно выполнить полное
преобразование к ассоциативным массивам.
Добавить загрузку на сервер!
Добавить загрузку на сервер!