РНР Изучение языка. Работа с файлами Для длительного хранения данных в файловой системе сервера часто используются обычные текстовые файлы. Открыть файл.

Презентация:



Advertisements
Похожие презентации
Лекция 11 Файлы. Точного определения файла не существует. Файлом может быть: Объект файловой системы (файлы, папки и т.д.) Устройство ввода/вывода (клавиатура,
Advertisements

Лекция 15 Функции PHP –Описание примера –Функция date –Функции работы с файлами.
Работа с файлами. Операции с файлами Для того чтобы можно было читать из файла или писать в файл, он должен быть предварительно открыт с помощью библиотечной.
РНР Изучение языка. Функции преобразования Функции обрезания строки Функции поиска в тексте Замена в тексте Форматирование текста.
Файловый тип данных Turbo Pascal Операции для работы с файлами 11 класс.
Программирование на языке Паскаль Работа с файловой системой.
Лабораторная работа 7. Работа с динамической памятью, строками и файлами.
Потоки (файлы) Функции и типы для работы с потоками в стиле С описаны в модуле stdio.h. В отличие от Паскаля в С с потоком не связан тип данных. Поток.
Множества значений или переменных с одним общим именем называются структурированными типами. По способу организации и типу компонентов выделяют: 1. Массивы.
УПРАВЛЕНИЕ ДИРЕКТОРИЯМИ Системные вызовы и библиотеки Unix SVR4.
Работа с файлами Сазонов Д.О. ПМиЭММ Часть 2. Тема занятия: Работа с файлами через потоки Для реализации файлового ввода/вывода, необходимо включить в.
Работа с файлами FILE НГТУ ИРИТ кафедра ИСУ Ольга Пронина.
УПРАВЛЕНИЕ ДИРЕКТОРИЯМИ Системные вызовы и библиотеки Unix SVR4 Иртегов Д.В. ФФ/ФИТ НГУ Электронный лекционный курс подготовлен в рамках реализации Программы.
Файлы - именованная область внешней памяти ЭВМ, хранящая совокупность данных. Файл.
1 Программирование на языке Паскаль Тема: Файлы. Integer, Real, Boolean, Character, String, Text.
Файловый тип данных Файл – это область памяти на внешнем носителе, в которой хранится некоторая информация. В языке Паскаль файл представляет собой последовательность.
Программирование на языке Паскаль Типизированные файлы.
1 Программирование на языке Паскаль Файлы с последовательным доступом. Кулебякин В.В.
Файловая переменная. Файл – совокупность данных, записанная во внешней памяти под определенным именем. Любой файл имеет три характерные особенности: уникальное.
Работа с файлами.. Процедура Assign(var f; name : String); Связывает внешний файл с именем name и переменную файлового типа f. Все дальнейшие операции.
Транксрипт:

РНР Изучение языка

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

Для длительного хранения данных в файловой системе сервера часто используются обычные текстовые файлы. Открыть файл Прочитать данные из файла или записать данные в файл Закрыть файл

Открытие файлов в файловой системе сервера производится при помощи функции fopen: fopen(имя_файла, режим, каталог_по_умолчанию)

Первый аргумент - имя файла или абсолютный путь к нему. Если абсолютный путь не указывается, то файл должен находится в текущем каталоге.

Второй аргумент режим говорит о том, для каких действий открывается файл и может принимать следующие значения: r (Открыть файл только для чтения; после открытия указатель файла устанавливается в начало файла); r+ (Открыть файл для чтения и записи; после открытия указатель файла устанавливается в начало файла); w (Создать новый пустой файл только для записи; если файл с таким именем уже есть вся информация в нем уничтожается);

w+ (Создать новый пустой файл для чтения записи; если файл с таким именем уже есть вся информация в нем уничтожается); a (Открыть файл для дозаписи; данные будут записываться в конец файла); a+ (Открыть файл для дозаписи и чтения данных; данные будут записываться в конец файла); b (Флаг, указывающий на работу (чтение и запись) с двоичным файлом; указывается только в Windows).

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

В случае удачного открытия файла, функция fopen возвращает дескриптор файла, в случае неудачи - false.

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

Этот код открывает файл C:/WWW/HTML/file.txt для чтения: <? $file = fopen("c:/www/html/file.txt","r"); if(!$file) { echo("Ошибка открытия файла"); } ?>

Содержимое открытого файла можно отобразить в браузере с помощью функции fpassthru (дескриптор)

<? $file = fopen("c:/www/html/picture1.jpg","rb"); if(!$file) { echo("Ошибка открытия файла"); } else { fpassthru($file); } ?>

Еще одна функция отображения readfile (имя_файла) в качестве аргумента принимает имя файла, а не его дескриптор: <? readfile ("file.txt"); ?>

Закрытие файлов осуществляется с помощью функции fclose (дескриптор)

Прочитать строку из открытого файла можно с помощью функции fread (дескриптор, длина ) Эта функция возвращает строку заданной длины символов.

Пример (чтение из файла): <? $file = fopen("c:/www/html/file.txt","r"); if(!file) { echo("Ошибка открытия файла"); } else { $buff = fread ($file,100); print $buff; } ?>

Файл отсутствует в текущем каталоге

Файл file.txt

Для чтения из файла можно также пользоваться функцией fgets: fgets (дескриптор, длина) Эта функция читает и возвращает строку заданной длины минус 1 байт.

Чтение прекращается, когда достигнута новая строка или конец файла.

Для чтения файла с удалением из него тегов HTML применяется функция fgetss (дескриптор, длина [, допустимые_теги])

Необязательный параметр допустимые_теги может содержать строку со списком тегов (через запятую), которые не должны быть отброшены, при этом теги в строке записываются.

Для чтения содержимого файла в массив, применяется функция file (имя_файла) Каждый элемент массива соответствует строке в прочитанном файле.

Функция feof (дескриптор) возвращает true при достижении указателем конца файла, а в противном случае возвращается false.

Функция file() удобна также тем, что с ее помощью можно легко подсчитать количество строк в файле: <? $file_array = file ("file.txt"); if(!$file_array) { echo("Ошибка открытия файла"); } else { $num_str = count($file_array); echo($num_str); } ?>

Примечание. Функцию file следует применять лишь для чтения небольших файлов.

Для чтения файлов с расширением *.csv применяется функция fgetcsv ( дескриптор, длина, разделитель, ограничитель) Функция читает строку из файла и разбивает ее по символу разделитель.

Формат CSV является одним из форматов, в котором могут сохранять файлы MS Excel, MS Access и ряд др. программ.

Запись в файлы осуществляется функциями fputs и fwrite: fputs (дескриптор, строка [, длина ]) fwrite (дескриптор, строка [, длина ])

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

В этом примере в файл "file.txt" записывается строка <? $file = fopen ("file.txt","r+"); $str = «Мировые информационные ресурсы"; if ( !$file ) { echo("Ошибка открытия файла"); } else { fputs ( $file, $str); } fclose ($file); ?> Файл открыт для чтения и записи; указатель установлен в начало файла

БЫЛО: СТАЛО:

ПРИМЕР (СЧЕТЧИК) Открыть файл только для чтения; указатель устанавливается в начало файла Создать новый пустой файл только для записи; если файл с таким именем уже есть - вся информация в нем уничтожается

Функция include() включает в сценарий фрагменты кода, сохраненные в других файлах

Примечание. Функция include() включает в сценарий фрагменты кода, сохраненные в других файлах.

Копирование файлов copy (имя_файла_1, имя_файла 2)

Переименование файла rename (старое_имя, новое_имя)

Удаление файла unlink (имя_файла)

Работа с каталогами

Для установки текущего каталога применяется функция chdir: chdir (каталог)

Работать с этой функцией можно следующим образом: chdir("/tmp/data"); // переход по абсолютному пути chdir("./js"); // переход в подкаталог текущего каталога chdir(".."); // переход в родительский каталог

Чтобы узнать текущий каталог getcwd (путь)

Открыть каталог opendir (путь)

Прочитать каталог dir ( каталог) Эта функция возвращает имена элементов, содержащихся в каталоге. Кроме файлов и папок в каталогах находятся также элементы "." и "..".

Текущий каталог, можно открыть, указав его имя как ".": $dir = opendir (".");

Закрытие каталога closedir (дескриптор)

Пример чтения и вывода файлов, находящихся в текущем каталоге. <? $dir = opendir ("."); echo "Files: "; while ($file = readdir ($dir)) { echo "$file "; } closedir ($dir); ?>

Можно исключить значения "." и ".." следующим образом: <? $dir = opendir ("."); while ( $file = readdir ($dir)) { if (( $file != ".") && ($file != "..")) { echo "$file "; } closedir ($dir); ?>

В качестве примера на рассмотренные функции, создадим скрипт, удаляющий все файлы из каталога c:/temp, к которым не было доступа в течение суток. Функция удаления файлов в этом случае вызывается рекурсивно.

<? function delTemporaryFiles ($directory) { $dir = opendir ($directory); while (( $file = readdir ($dir))) { if( is_file ($directory."/".$file)) { $acc_time = fileatime ($directory."/".$file); $time = time(); if (($time - $acc_time) > 24*60*60) { if ( unlink ($directory."/".$file)) { echo ("Файлы успешно удалены"); } } }

else if ( is_dir ($directory."/".$file) && ($file != ".") && ($file != "..")) { delTemporaryFiles ($directory."/".$file); } closedir ($dir); } delTemporaryFiles ("c:/temp"); ?>

Создание каталогов mkdir ( имя_каталога) В случае неудачи возвращает false.

Удалить каталог rmdir ( имя_каталога)

При чтении данных из файла указатель текущей позиции перемещается к очередному непрочитанному символу. Установка указателя текущей позиции в начало файла rewind ( дескриптор)

Узнать текущее положение указателя можно при помощи функции ftell: ftell ( дескриптор)

Установливает указатель в любое место файла fseek ( дескриптор, смещение [, int whence ]) Функция устанавливает указатель файла на байт с о смещением offset (от начала файла, от его конца или от текущей позиции, в зависимости от значения параметра whence).

Аргумент file представляет собой дескриптор файла. Аргумент whence задает с какого места отсчитывается смещение offset и может принимать одно из следующих значений: SEEK_SET (отсчитывает позицию начала файла); SEEK_CUR (отсчитывает позицию относительно текущего положения указателя); SEEK_END (отсчитывает позицию относительно конца файла). По умолчанию аргумент whence имеет значение SEEK_SET.

Узнать, находится ли указатель в конце файла, можно с помощью функции feof: feof (file) Если указатель находится в конце файла, функция возвращает true, в ином случае возвращается false.

Функцию feof удобно использовать при чтении файла: <? $file = fopen ("file.txt","r"); if ($file) { while(!feof($file)) { $str = fgets($file); echo $str; echo (" "); } fclose ( $file); } else { echo("Ошибка открытия файла"); } ?>

При помощи этой функции удобно также определять количество строк в файле: <? $file = fopen ("file.txt","r"); if ($file) { $counter = 0; while(!feof($file)) { $str = fgets ($file); $counter++; } echo($counter); fclose ($file); } else { echo("Ошибка открытия файла"); } ?>

Для получения дополнительной информации об атрибутах файла можно воспользоваться следующими функциями. Функция file_exists проверяет, существует ли файл и возвращает true, если файл существует и false в противном случае: file_exists (filename)

Функция fileatime возвращает время последнего обращения к файлу: fileatime (filename)

Функция filemtime возвращает время последней модификации содержимого файла: filemtime (filename)

Функция file_size возвращает размер файла в байтах: file_size (filename)

Функция file_type возвращает тип файла: file_type (filename) Строка, возвращаемая этой функцией, содержит один из следующих типов файла: char (специальное символьное устройство); dir (каталог); fifo (именованный канал); link (символическая ссылка); block (специальное блочное устройство); file (обычный файл); unknown (тип не установлен).

Поскольку использование функций, возвращающих характеристики файла, весьма ресурсоемко, во избежание потери производительности при вызовах таких функций, PHP кэширует информацию о файле. Очистить этот кэш можно с помощью функции clearstatcache: <? clearstatcache(); ?>