Скачать презентацию Мировые информационные ресурсы Лекция 4 Работа с файлами Скачать презентацию Мировые информационные ресурсы Лекция 4 Работа с файлами

МИР_04_PHP.ppt

  • Количество слайдов: 42

Мировые информационные ресурсы Лекция 4. Работа с файлами Мировые информационные ресурсы Лекция 4. Работа с файлами

Проверка существования и размера файла Функция filе_ехists( ) - проверяет, существует ли заданный файл. Проверка существования и размера файла Функция filе_ехists( ) - проверяет, существует ли заданный файл. Если файл существует, функция возвращает TRUE, в противном случае возвращается FALSE. Синтаксис: file_exists (файл) Пример: if (! file_exists ($filename)) : print "File $filename does not exist!"; endif: 2

Проверка существования и размера файла Функция is_file( ) - проверяет существование заданного файла и Проверка существования и размера файла Функция is_file( ) - проверяет существование заданного файла и возможность выполнения с ним операций чтения/записи. Синтаксис: is_file(файл) Пример: $file = "somefile. txt"; if (is_file($file)) : print "The file $file is valid and exists!"; else : print "The file $file does not exist or it is not a valid file!"; endif: 3

Проверка существования и размера файла Функция filesize( ) - возвращает размер (в байтах) файла Проверка существования и размера файла Функция filesize( ) - возвращает размер (в байтах) файла с заданным именем или FALSE в случае ошибки. Синтаксис: filesize(имя_файла) Пример: $fs = filesize("test. txt"); print "Файл /"test. txt/" занимает на диске $fs байт. "; 4

Открытие и закрытие файлов Функция fopen( ) - открывает файл (если он существует) и Открытие и закрытие файлов Функция fopen( ) - открывает файл (если он существует) и возвращает целое число — так называемый файловый дескриптор (file handle). Синтаксис: fopen (файл, режим [, включение_пути]) Пример: $file = fopen("c: /wwwdocs/file. txt", "r"); if(!file) { echo("Ошибка открытия файла"); } Если параметр включение_пути равен 1, то путь к файлу определяется по отношению к каталогу включаемых 5 файлов, указанному в файле php. ini.

Открытие и закрытие файлов fopen(файл, режим [, включение_пути]) Если открываемый файл находится в локальной Открытие и закрытие файлов fopen(файл, режим [, включение_пути]) Если открываемый файл находится в локальной файловой системе, то параметр файл содержит имя локального файла, функция fopen( ) открывает этот файл и возвращает дескриптор. существует в виде стандартного потока ввода/вывода, то параметр файл задан в виде php: //stdin, php: //stdout или php: //stderr, открывается соответствующий стандартный поток ввода/вывода. представляет файл в удаленной системе, принимаемой средствами HTTP или FTP, то параметр файл начинается - с префикса http: //, тогда функция открывает подключение HTTP к серверу и возвращает дескриптор для указанного файла, - с префикса ftp: //, тогда функция открывает подключение FTP к серверу и возвращает дескриптор для указанного файла. При этом, если сервер не поддерживает пассивный режим FTP, вызов fopen( ) завершается неудачей. По умолчанию обычно используется активный режим. Кроме того, FTP-файлы открываются либо для чтения, либо для 6 записи.

Открытие и закрытие файлов fopen(файл, режим [, включение_пути]) Параметр режим определяет возможность выполнения чтения Открытие и закрытие файлов fopen(файл, режим [, включение_пути]) Параметр режим определяет возможность выполнения чтения и записи в файл. Режим r Описание Только чтение. Указатель текущей позиции устанавливается в начало файла r+ Чтение и запись. Указатель текущей позиции устанавливается в начало файла w Только запись. Указатель текущей позиции устанавливается в начало файла, а все содержимое файла уничтожается. Если файл не существует, функция пытается создать его w+ Чтение и запись. Указатель текущей позиции устанавливается в начало файла, а все содержимое файла уничтожается. Если файл не существует, функция пытается создать его a Только запись. Указатель текущей позиции устанавливается в конец файла. Если файл не существует, функция пытается создать его a+ Чтение и запись. Указатель текущей позиции устанавливается в конец файла. Если файл не существует, функция пытается создать его b Флаг, указывающий на работу (чтение и запись) с двоичным файлом; 7 указывается только в Windows.

Открытие и закрытие файлов fopen(файл, режим [, включение_пути]) Пример: $file = Открытие и закрытие файлов fopen(файл, режим [, включение_пути]) Пример: $file = "userdata. txt"; // Некоторый файл $fh = fopen($file, "a+") or die("File ($file) does not exist!"); Пример: $site = "http: //www. php. net": // Сервер, доступный через HTTP $sh = fopen($site, "r"); страницей Php. net //Связать дескриптор с индексной Пример: $file = fopen("c: /wwwdocs/picture. jpg", "rb"); if(!file) { echo("Ошибка открытия файла"); } 8

Открытие и закрытие файлов Функция fclose( ) - закрывает файл с заданным дескриптором. При Открытие и закрытие файлов Функция fclose( ) - закрывает файл с заданным дескриптором. При успешном закрытии возвращается TRUE, при неудаче — FALSE. Синтаксис: fclose(дескриптор) Функция fclose( ) успешно закрывает только те файлы, которые были ранее открыты функциями fopen( ) или fsockopen( ). Пример: $file = "userdata. txt"; if (file_exists($file)) : $fh = fopen($file, "r"); // Выполнить операции с файлом fclose($fh); else : print "Файл $file не существует!"; Endif; 9

Перемещение по файлу При чтении данных из файла указатель текущей позиции перемещается к очередному Перемещение по файлу При чтении данных из файла указатель текущей позиции перемещается к очередному непрочитанному символу. Функция rewind() - Установка указателя текущей позиции в начало файла Синтаксис: rewind (дескриптор) Функция ftell() - Возвращает положение указателя файла. Синтаксис: ftell (дескриптор) 10

Перемещение по файлу Функция fseek() Синтаксис: fseek(дескриптор, смещение, отсчет=SEEK_SET) Устанавливает указатель файла на байт Перемещение по файлу Функция fseek() Синтаксис: fseek(дескриптор, смещение, отсчет=SEEK_SET) Устанавливает указатель файла на байт со смещением (от начала файла, от его конца или от текущей позиции, в зависимости от параметра отсчет). Параметр отсчет задает с какого места отсчитывается смещение $offset. В PHP для этого существуют три константы, равные, соответственно, 0, 1 и 2: SEEK_SET - устанавливает позицию начиная с начала файла; SEEK_CUR - отсчитывает позицию относительно текущей позиции; SEEK_END - отсчитывает позицию относительно конца файла; В случае использования последних двух констант параметр смещение может быть отрицательным. В случае успешного завершения функция возвращает 0, а в случае неудачи -1. 11

Перемещение по файлу Функция feof() - Указатель конца файла. Синтаксис: feof(дескриптор файла) Возвращает true, Перемещение по файлу Функция feof() - Указатель конца файла. Синтаксис: feof(дескриптор файла) Возвращает true, если достигнут конец файла (то есть если указатель файла установлен за концом файла). 12

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

Запись в файл Функция is_writeable( ) позволяет убедиться в том, что файл существует и Запись в файл Функция is_writeable( ) позволяет убедиться в том, что файл существует и для него разрешена операция записи. Возможность записи проверяется как для файла, так и для каталога. Синтаксис: is_writeable (файл) Функция fwrite( ) записывает содержимое строковой переменной в файл, заданный файловым дескриптором. Синтаксис: fwrite(дескриптор, переменная [, длина]) Если при вызове функции передается необязательный параметр длина, запись останавливается либо после записи указанного количества символов, либо при достижении конца строки. Функция fputs( ) - является псевдонимом fwrite( ) и имеет точно такой же синтаксис. Синтаксис: fputs(дескриптор, переменная [, длина]) 14

Запись в файл Пример: // Информация о трафике на пользовательском сайте $data = Запись в файл Пример: // Информация о трафике на пользовательском сайте $data = "08: 13: 00|12: 37: 12|208. 247. 106. 187|Win 2003"; $filename = "somefile. txt"; // Если файл существует и в него возможна запись if ( is_writeable($filename) ) : // Открыть файл и установить указатель текущей позиции в конец файла $fh = fopen($filename, "a+"); // Записать содержимое $data в файл $success = fwrite($fh, $data); // Закрыть файл fclose($fh); else : print "Невозможно открыть файл $filename для записи. "; endif; 15

Чтение из файла Функция is_readable( ) - позволяет убедиться в том, что файл существует Чтение из файла Функция is_readable( ) - позволяет убедиться в том, что файл существует и для него разрешена операция чтения. Возможность чтения проверяется как для файла, так и для каталога. Синтаксис: is_readable (файл) Пример: if ( is_readable($filename) ) : // Открыть файл и установить указатель текущей позиции в конец файла $fh = fopen($filename, "r"); else : print "$filename is not readable!"; endif; 16

Чтение из файла Функция fread( ) - читает из файла, заданного файловым дескриптором, заданное Чтение из файла Функция fread( ) - читает из файла, заданного файловым дескриптором, заданное количество байт. Синтаксис: fread(дескриптор, длина) Дескриптор должен ссылаться на открытый файл, доступный для чтения. Чтение прекращается после прочтения заданного количества байт или при достижении конца файла. Пример: $fh = fopen('text. txt', "r") or die("Can't open file!"); $file = fread($fh, filesize($fh)); #ф-ция filesize гарантирует прочтение всего содержимого файла. print $file; fclose($fh); 17

Чтение из файла Функция fgetc( ) - возвращает строку, содержащую один символ из файла Чтение из файла Функция fgetc( ) - возвращает строку, содержащую один символ из файла в текущей позиции указателя, или FALSE при достижении конца файла. Синтаксис: fgetc (дескриптор) Дескриптор должен ссылаться на открытый файл, доступный для чтения. Пример: посимвольное чтение и вывод файла: $fh = fopen("text. txt", "r"); while (! feof($fh)) : $char = fgetc($fh): print $char; endwhile; fclose($fh); 18

Чтение из файла Функция fgets( ) возвращает строку, прочитанную от текущей позиции указателя в Чтение из файла Функция fgets( ) возвращает строку, прочитанную от текущей позиции указателя в файле, определяемом файловым дескриптором. Файловый указатель должен ссылаться на открытый файл, доступный для чтения. Синтаксис: fgets (дескриптор, длина) Чтение прекращается при выполнении одного из следующих условий: из файла прочитано длина — 1 байт; из файла прочитан символ новой строки (включается в возвращаемую строку); из файла прочитан признак конца файла (EOF). 19

Чтение из файла Пример: построчное чтение и вывод файла: $fh = fopen( Чтение из файла Пример: построчное чтение и вывод файла: $fh = fopen("text. txt", "r"); while (! feof($fh)); $line = fgets($fh, 4096); print $line. " "; endwhile; fclose($fh): 20

Чтение из файла Функция fgetss( ) - полностью аналогична fgets( ) за одним исключением Чтение из файла Функция fgetss( ) - полностью аналогична fgets( ) за одним исключением — она пытается удалять из прочитанного текста все теги HTML и РНР: fgetss (дескриптор, длина [, разрешенные_теги]) Пример: Файл example. html PHP Основы PHP

Переменные

В РНР переменные начинаются со знака доллара ($). За этим знаком может следовать любое количество буквенно-цифровых символов и символов подчеркивания, но первый символ не может быть цифрой или подчеркиванием. Следует также помнить, что имена переменных в РНР чувствительны к регистру, в отличие от ключевых слов. 21

Чтение из файла Пример скрипта: $fh = fopen( Чтение из файла Пример скрипта: $fh = fopen("example. html", "r"); while (! feof($fh)) : print fgetss($fh, 2048); endwhile; fclose($fh); Вывод: PHP Основы PHP Переменные В РНР переменные начинаются со знака доллара ($). За этим знаком может следовать любое количество буквенно-цифровых символов и символов подчеркивания, но первый символ не может быть цифрой или подчеркиванием. Следует также помнить, что имена переменных в РНР чувствительны к регистру, в отличие от ключевых слов. 22

Чтение файла в массив Функция file( ) - загружает все содержимое файла в индексируемый Чтение файла в массив Функция file( ) - загружает все содержимое файла в индексируемый массив. Каждый элемент массива соответствует одной строке файла. Синтаксис: file (файл [, включение_пути]) Если параметр включение_пути равен 1, то путь к файлу определяется по отношению к каталогу включаемых файлов, указанному в файле php. ini. 23

Чтение файла в массив Пример: $file_array = file( Чтение файла в массив Пример: $file_array = file("text. txt"); while ( list( $line_num, $line ) = each($file_array ) ): print "Line $line_num: ", htmlspecialchars($line ), " n" endwhile; Каждая строка массива выводится вместе с номером: Line 0: Первая строка файла Line 1: Вторая строка файла Line 2: Третья строка файла Line 3: Четвертая строка файла Line 4: Пятая строка файла Line 5: Шестая строка файла 24

Файлы и потоки Все операции ввода-вывода в РНР выполняются под потоками. Функция readfile( ) Файлы и потоки Все операции ввода-вывода в РНР выполняются под потоками. Функция readfile( ) - читает содержимое файла и направляет его в стандартный вывод (в большинстве случаев — в браузер). Синтаксис: readfile (файл [, включение_пути]) - возвращает количество прочитанных байтов. Файл может находиться в локальной файловой системе, существовать в виде стандартного потока ввода/вывода или представлять файл в удаленной системе, принимаемой средствами HTTP или FTP. Параметр файл задается по тем же правилам, что и в функции fopen( ). Пример: $restaurant_file = "latorre. txt"; readfile($restaurant_filе); 25

Файлы и потоки Функция popen( ) - открывает однонаправленный поток ввода или вывода к Файлы и потоки Функция popen( ) - открывает однонаправленный поток ввода или вывода к запускаемой программе. Такие потоки называют также каналами. С открытым каналом можно работать как с обычным файлом. Синтаксис: popen (команда, режим) Параметр команда определяет выполняемую системную команду. Параметр режим описывает режим доступа. 26

Файлы и потоки Пример: $fh = fopen( Файлы и потоки Пример: $fh = fopen("spices. txt", "w"); # Открыть файл "spices. txt" для записи // Добавить несколько строк текста fputs($fh, "Parsley, sage, rosemaryn"); fputs($fh, "Paprika, salt, peppern"); fputs($fh, "Basil, sage, gingern"); // Закрыть дескриптор fclose($fh); // Открыть процесс UNIX grep для поиска слова Basil в файле spices. txt $fh = popen("grep Basil < spices. txt", "r"); // Вывести результат работы grep fpassthru($fh); Результат: Basil, sage, ginger 27

Файлы и потоки Функция pclose( ) - закрывает соединение с процессом, заданным дескриптором. Синтаксис: Файлы и потоки Функция pclose( ) - закрывает соединение с процессом, заданным дескриптором. Синтаксис: pclose (дескриптор} В параметре дескриптор передается дескриптор, полученный ранее при успешном вызове рореn( ). 28

Запуск внешних программ Сценарии РНР могут выполнять программы, находящиеся на сервере. Такая возможность особенно Запуск внешних программ Сценарии РНР могут выполнять программы, находящиеся на сервере. Такая возможность особенно часто используется при администрировании системы через браузер, а также для более удобного получения сводной информации о системе. Функция ехес( ) - запускает заданную программу и возвращает последнюю строку ее выходных данных. Синтаксис: exec (команда [, массив [, возврат]]) Внимание: функция ехес( ) только выполняет команду, не выводя результатов ее работы. Все выходные данные команды можно сохранить в необязательном параметре массив. Если при заданном параметре массив также задается переменная возврат, последней присваивается код возврата выполненной команды. 29

Обратные апострофы Существует другой способ выполнения системных команд, не требующий вызова функций, — выполняемая Обратные апострофы Существует другой способ выполнения системных команд, не требующий вызова функций, — выполняемая команда заключается в обратные апострофы (` `), а результаты ее работы отображаются в браузере. Пример: $output = `ls`; print "

$output
"; Этот фрагмент выводит в браузер содержимое каталога, в котором находится сценарий. 30

Работа с файловой системой Функция basename( ) - выделяет имя файла из переданного полного Работа с файловой системой Функция basename( ) - выделяет имя файла из переданного полного имени. Синтаксис: basename(полное_имя) Пример: $path = "/usr/local/phppower/htdocs/index. php"; $file = basename($path); # $file = "index. php" Функция getlastmod( ) - возвращает дату и время последней модификации страницы, из которой вызывается функция. Синтаксис: getlastmod() Пример: echo "Last modified: ". date( "H: i: s a", getlastmod( ) ); 31

Работа с файловой системой Функция stat( ) - возвращает индексируемый массив с подробной информацией Работа с файловой системой Функция stat( ) - возвращает индексируемый массив с подробной информацией о файле с заданным именем. Синтаксис: stat(имя_файла) В элементах массива возвращается следующая информация: 0 Устройство 1 Индексный узел (inode) 2 Режим защиты индексного узла 3 Количество ссылок 4 Идентификатор пользователя владельца 5 Идентификатор группы владельца 6 Тип устройства индексного узла 7 Размер в байтах 8 Время последнего обращения 9 Время последней модификации 10 Время последнего изменения 11 Размер блока при вводе/выводе в файловой системе 12 Количество выделенных блоков 32

Работа с файловой системой Пример: $file - Работа с файловой системой Пример: $file - "datafile. txt"; list($dev, $inodep, $nlink, $uid, $gid, $inodev, $size, $atime, $mtime, $ctime, $bsize) = stat($file); print "$file is $size bytes. "; print "Last access time: $atime "; print "Last modification time: $mtime "; Результат: datafile. txt is 289 bytes. Last access time: August 15 2007 12: 00 Last modification time: August 15 2007 10: 07: 18 33

Копирование, переименование и удаление файлов Функция сору( ) Синтаксис: copy (источник, приемник) Функция сору( Копирование, переименование и удаление файлов Функция сору( ) Синтаксис: copy (источник, приемник) Функция сору( ) пытается скопировать файл источник в файл приемник; в случае успеха возвращается TRUE, а при неудаче — FALSE. Если файл приемник не существует, функция сору( ) создает его. Пример: $data_file = "datal. txt"; copy($data_file, $data_file'. bak') or die("Could not copy $data_file"); 34

Копирование, переименование и удаление файлов Функция rename( ) - переименовывает файл. В случае успеха Копирование, переименование и удаление файлов Функция rename( ) - переименовывает файл. В случае успеха возвращается TRUE, a при неудаче — FALSE. Синтаксис: rename (старое_имя, новое_имя) Пример: $data_file = "datal. txt"; rename($data_file, $datafile'. old') or die ("Could not rename $data_file"); Функция unlink( ) - удаляет файл с заданным именем. Синтаксис: unlink (файл) 35

Работа с каталогами Функция dirname( ) — извлекает путь из полного имени файла. Синтаксис: Работа с каталогами Функция dirname( ) — извлекает путь из полного имени файла. Синтаксис: dirname (путь) Пример: $path = "/usr/locla/phppower/htdocs/index. php"; $file = dirname($path); // $file = "usr/local/phppower/htdocs" Функция dirname( ) иногда используется в сочетании с переменной $SCRIPT_FILENAME для получения полного пути к сценарию, из которого выполняется команда: $dir = dirname($SCRIPT_FILENAME); 36

Работа с каталогами Функция is_dir( ) - проверяет, является ли файл с заданным именем Работа с каталогами Функция is_dir( ) - проверяет, является ли файл с заданным именем каталогом: is_dir (имя_файла) Пример: $isdir = is_dir("index. html"); // Возвращает FALSE $isdir = is_dir("book"); // Возвращает TRUE 37

Работа с каталогами Функция mkdir( ) — создает новый каталог. Синтаксис: mkdir (путь, режим) Работа с каталогами Функция mkdir( ) — создает новый каталог. Синтаксис: mkdir (путь, режим) Параметр путь определяет путь для создания нового каталога. Необходимо завершить параметр именем нового каталога. Параметр режим определяет разрешения, назначаемые созданному каталогу. Права доступа задаются только для каталогов UNIX, поскольку в Windows этот аргумент игнорируется. Пример: $flag = mkdir ("c: /temp/test", 0700); if($flag) { else { echo("Каталог успешно создан"); } echo("Ошибка создания каталога"); } 38

Работа с каталогами Функция opendir( ) - открывает дескриптор для работы с каталогом. Синтаксис: Работа с каталогами Функция opendir( ) - открывает дескриптор для работы с каталогом. Синтаксис: opendir (путь) Функция closedir( ) - закрывает дескриптор каталога, переданный в качестве параметра. Синтаксис: closedir(дескриптор_каталога) Функция readdir( ) - возвращает очередной элемент заданного каталога. Синтаксис: readdir(дескриптор_каталога) Пример: Вывод списка всех файлов и подкаталогов в текущем каталоге: $dh = opendir(. ); while ($file = readdir($dh)) : print "$file "; endwhile; closedir($dh); 39 39

Работа с каталогами Функция chdir( ) — осуществляет переход в каталог, заданный параметром. Синтаксис: Работа с каталогами Функция chdir( ) — осуществляет переход в каталог, заданный параметром. Синтаксис: chdir (каталог) chdir("/tmp/data"); // переход по абсолютному пути chdir(". /js"); // переход в подкаталог текущего каталога chdir(". . "); // переход в родительский каталог Пример: $newdir = "book"; chdir($newdir) or die("Could not change to directory ($newdir)"); $dh = opendir('. '); print "Files: "; while ($file = readdir($dh)) ; print "$file "; endwhile; closedir($dh); 40

Работа с каталогами Функция rewinddir( ) - переводит указатель текущей позиции в начало каталога, Работа с каталогами Функция rewinddir( ) - переводит указатель текущей позиции в начало каталога, открытого функцией opendir( ). Синтаксис: rewinddir (манипулятор_каталога) 41

Пример Счетчик обращений <? $access = Пример Счетчик обращений 42