Similar presentations:
Мировые информационные ресурсы. Лекция 4. Работа с файлами
1.
Мировые информационные ресурсыЛекция 4. Работа с файлами
2.
Проверка существования иразмера файла
Функция filе_ехists( )
- проверяет, существует ли заданный файл. Если файл
существует, функция возвращает TRUE, в противном
случае возвращается FALSE.
Синтаксис:
file_exists (файл)
Пример:
if (! file_exists ($filename)) :
print "File $filename does not exist!";
endif:
2
3.
Проверка существования иразмера файла
Функция 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
4.
Проверка существования иразмера файла
Функция filesize( )
- возвращает размер (в байтах) файла с заданным
именем или FALSE в случае ошибки.
Синтаксис:
filesize(имя_файла)
Пример:
$fs = filesize("test.txt");
print "Файл /"test.txt/" занимает на диске $fs байт.";
4
5.
Открытие и закрытие файловФункция fopen( )
- открывает файл (если он существует) и возвращает
целое число — так называемый файловый дескриптор
(file handle).
Синтаксис:
fopen (файл, режим [, включение_пути])
Пример:
$file = fopen("c:/wwwdocs/file.txt","r");
if(!file)
{ echo("Ошибка открытия файла"); }
Если параметр включение_пути равен 1, то путь к файлу
определяется по отношению к каталогу включаемых
5
файлов, указанному в файле php.ini.
6.
Открытие и закрытие файловfopen(файл, режим [, включение_пути])
Если открываемый файл
находится в локальной файловой системе, то параметр файл
содержит имя локального файла, функция fopen( ) открывает этот
файл и возвращает дескриптор.
существует в виде стандартного потока ввода/вывода, то
параметр файл задан в виде php://stdin, php://stdout или
php://stderr, открывается соответствующий стандартный поток
ввода/вывода.
представляет файл в удаленной системе, принимаемой
средствами HTTP или FTP, то параметр файл начинается
- с префикса http://, тогда функция открывает подключение HTTP
к серверу и возвращает дескриптор для указанного файла,
- с префикса ftp://, тогда функция открывает подключение FTP к
серверу и возвращает дескриптор для указанного файла. При
этом, если сервер не поддерживает пассивный режим FTP, вызов
fopen( ) завершается неудачей. По умолчанию обычно
используется активный режим.
Кроме того, FTP-файлы открываются либо для чтения, либо для
6
записи.
7.
Открытие и закрытие файловfopen(файл, режим [, включение_пути])
Параметр режим определяет возможность выполнения чтения и записи в файл.
Режим
r
Описание
Только чтение. Указатель текущей позиции устанавливается в начало
файла
r+ Чтение и запись. Указатель текущей позиции устанавливается в
начало файла
w
Только запись. Указатель текущей позиции устанавливается в начало
файла, а все содержимое файла уничтожается. Если файл не
существует, функция пытается создать его
w+ Чтение и запись. Указатель текущей позиции устанавливается в
начало файла, а все содержимое файла уничтожается. Если файл не
существует, функция пытается создать его
a
Только запись. Указатель текущей позиции устанавливается в конец
файла. Если файл не существует, функция пытается создать его
a+ Чтение и запись. Указатель текущей позиции устанавливается в конец
файла. Если файл не существует, функция пытается создать его
b
Флаг, указывающий на работу (чтение и запись) с двоичным файлом;
7
указывается только в Windows.
8.
Открытие и закрытие файлов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
9.
Открытие и закрытие файловФункция 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
10.
Перемещение по файлуПри чтении данных из файла указатель текущей позиции
перемещается к очередному непрочитанному символу.
Функция rewind()
- Установка указателя текущей позиции в начало файла
Синтаксис:
rewind (дескриптор)
Функция ftell()
- Возвращает положение указателя файла.
Синтаксис:
ftell (дескриптор)
10
11.
Перемещение по файлуФункция fseek()
Синтаксис:
fseek(дескриптор, смещение, отсчет=SEEK_SET)
Устанавливает указатель файла на байт со смещением (от начала
файла, от его конца или от текущей позиции, в зависимости от
параметра отсчет).
Параметр отсчет задает с какого места отсчитывается смещение
$offset. В PHP для этого существуют три константы, равные,
соответственно, 0, 1 и 2:
SEEK_SET - устанавливает позицию начиная с начала файла;
SEEK_CUR - отсчитывает позицию относительно текущей позиции;
SEEK_END - отсчитывает позицию относительно конца файла;
В случае использования последних двух констант параметр смещение
может быть отрицательным.
В случае успешного завершения функция возвращает 0, а в случае
неудачи -1.
11
12.
Перемещение по файлуФункция feof()
- Указатель конца файла.
Синтаксис:
feof(дескриптор файла)
Возвращает true, если достигнут конец файла (то есть
если указатель файла установлен за концом файла).
12
13.
Перемещение по файлуПример:
$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
14.
Запись в файлФункция is_writeable( )
позволяет убедиться в том, что файл существует и для него разрешена
операция записи. Возможность записи проверяется как для файла, так и для
каталога. Синтаксис:
is_writeable (файл)
Функция fwrite( )
записывает содержимое строковой переменной в файл, заданный файловым
дескриптором. Синтаксис:
fwrite(дескриптор, переменная [, длина])
Если при вызове функции передается необязательный параметр длина, запись
останавливается либо после записи указанного количества символов, либо при
достижении конца строки.
Функция fputs( )
- является псевдонимом fwrite( ) и имеет точно такой же синтаксис. Синтаксис:
fputs(дескриптор, переменная [, длина])
14
15.
Запись в файлПример:
// Информация о трафике на пользовательском сайте
$data = "08:13:00|12:37:12|208.247.106.187|Win2003";
$filename = "somefile.txt";
// Если файл существует и в него возможна запись
if ( is_writeable($filename) ) :
// Открыть файл и установить указатель текущей позиции в конец файла
$fh = fopen($filename, "a+");
// Записать содержимое $data в файл
$success = fwrite($fh, $data);
// Закрыть файл
fclose($fh);
else :
print "Невозможно открыть файл $filename для записи.";
endif;
15
16.
Чтение из файлаФункция is_readable( )
- позволяет убедиться в том, что файл существует и для него
разрешена операция чтения. Возможность чтения проверяется как
для файла, так и для каталога.
Синтаксис:
is_readable (файл)
Пример:
if ( is_readable($filename) ) :
// Открыть файл и установить указатель текущей позиции в конец
файла
$fh = fopen($filename, "r");
else :
print "$filename is not readable!";
endif;
16
17.
Чтение из файлаФункция fread( )
- читает из файла, заданного файловым дескриптором, заданное
количество байт. Синтаксис:
fread(дескриптор, длина)
Дескриптор должен ссылаться на открытый файл, доступный для
чтения.
Чтение прекращается после прочтения заданного количества байт
или при достижении конца файла.
Пример:
$fh = fopen('text.txt', "r") or die("Can't open file!");
$file = fread($fh, filesize($fh));#ф-ция filesize гарантирует прочтение
всего содержимого файла.
print $file;
fclose($fh);
17
18.
Чтение из файлаФункция fgetc( )
- возвращает строку, содержащую один символ из файла в текущей
позиции указателя, или FALSE при достижении конца файла.
Синтаксис:
fgetc (дескриптор)
Дескриптор должен ссылаться на открытый файл, доступный для
чтения.
Пример: посимвольное чтение и вывод файла:
$fh = fopen("text.txt", "r");
while (! feof($fh)) :
$char = fgetc($fh):
print $char;
endwhile;
fclose($fh);
18
19.
Чтение из файлаФункция fgets( )
возвращает строку, прочитанную от текущей позиции указателя в
файле, определяемом файловым дескриптором. Файловый
указатель должен ссылаться на открытый файл, доступный для
чтения.
Синтаксис:
fgets (дескриптор, длина)
Чтение прекращается при выполнении одного из следующих
условий:
из файла прочитано длина — 1 байт;
из файла прочитан символ новой строки (включается в
возвращаемую строку);
из файла прочитан признак конца файла (EOF).
19
20.
Чтение из файлаПример: построчное чтение и вывод файла:
$fh = fopen("text.txt", "r");
while (! feof($fh));
$line = fgets($fh, 4096);
print $line. "<br>";
endwhile;
fclose($fh):
20
21.
Чтение из файлаФункция fgetss( )
- полностью аналогична fgets( ) за одним исключением — она
пытается удалять из прочитанного текста все теги HTML и РНР:
fgetss (дескриптор, длина [, разрешенные_теги])
Пример: Файл example.html
<html><head><title>PHP</title></head>
<body><h1>Основы PHP</h1>
<p><b>Переменные </b>
<p>В РНР переменные начинаются со знака доллара ($). За этим
знаком может следовать любое количество буквенно-цифровых
символов и символов подчеркивания, но первый символ не может
быть цифрой или подчеркиванием. Следует также помнить, что
имена переменных в РНР чувствительны к регистру, в отличие от
ключевых слов.
</body></html>
21
22.
Чтение из файлаПример скрипта:
$fh = fopen("example.html", "r");
while (! feof($fh)) :
print fgetss($fh, 2048);
endwhile;
fclose($fh);
Вывод:
PHP Основы PHP Переменные В РНР переменные начинаются со
знака доллара ($). За этим знаком может следовать любое
количество буквенно-цифровых символов и символов
подчеркивания, но первый символ не может быть цифрой или
подчеркиванием. Следует также помнить, что имена переменных в
РНР чувствительны к регистру, в отличие от ключевых слов.
22
23.
Чтение файла в массивФункция file( )
- загружает все содержимое файла в индексируемый массив.
Каждый элемент массива соответствует одной строке файла.
Синтаксис:
file (файл [, включение_пути])
Если параметр включение_пути равен 1, то путь к файлу
определяется по отношению к каталогу включаемых файлов,
указанному в файле php.ini.
23
24.
Чтение файла в массивПример:
$file_array = file("text.txt");
while ( list( $line_num, $line ) = each($file_array ) ):
print "<b>Line $line_num:</b> ", htmlspecialchars($line ), "<br>\n"
endwhile;
Каждая строка массива выводится вместе с номером:
Line 0: Первая строка файла
Line 1: Вторая строка файла
Line 2: Третья строка файла
Line 3: Четвертая строка файла
Line 4: Пятая строка файла
Line 5: Шестая строка файла
24
25.
Файлы и потокиВсе операции ввода-вывода в РНР выполняются под потоками.
Функция readfile( )
- читает содержимое файла и направляет его в стандартный вывод
(в большинстве случаев — в браузер). Синтаксис:
readfile (файл [, включение_пути])
- возвращает количество прочитанных байтов. Файл может
находиться в локальной файловой системе, существовать в виде
стандартного потока ввода/вывода или представлять файл в
удаленной системе, принимаемой средствами HTTP или FTP.
Параметр файл задается по тем же правилам, что и в функции
fopen( ).
Пример:
$restaurant_file = "latorre.txt";
readfile($restaurant_filе);
25
26.
Файлы и потокиФункция popen( )
- открывает однонаправленный поток ввода или вывода к
запускаемой программе. Такие потоки называют также каналами. С
открытым каналом можно работать как с обычным файлом.
Синтаксис:
popen (команда, режим)
Параметр команда определяет выполняемую системную команду.
Параметр режим описывает режим доступа.
26
27.
Файлы и потокиПример:
$fh = fopen("spices.txt","w"); # Открыть файл "spices.txt" для записи
// Добавить несколько строк текста
fputs($fh, "Parsley, sage, rosemary\n");
fputs($fh, "Paprika, salt, pepper\n");
fputs($fh, "Basil, sage, ginger\n");
// Закрыть дескриптор
fclose($fh);
// Открыть процесс UNIX grep для поиска слова Basil в файле spices.txt
$fh = popen("grep Basil < spices.txt", "r");
// Вывести результат работы grep
fpassthru($fh);
Результат:
Basil, sage, ginger
27
28.
Файлы и потокиФункция pclose( )
- закрывает соединение с процессом, заданным дескриптором.
Синтаксис:
pclose (дескриптор}
В параметре дескриптор передается дескриптор, полученный ранее
при успешном вызове рореn( ).
28
29.
Запуск внешних программСценарии РНР могут выполнять программы, находящиеся на
сервере. Такая возможность особенно часто используется при
администрировании системы через браузер, а также для более
удобного получения сводной информации о системе.
Функция ехес( )
- запускает заданную программу и возвращает последнюю строку ее
выходных данных. Синтаксис:
exec (команда [, массив [, возврат]])
Внимание: функция ехес( ) только выполняет команду, не выводя
результатов ее работы. Все выходные данные команды можно
сохранить в необязательном параметре массив.
Если при заданном параметре массив также задается переменная
возврат, последней присваивается код возврата выполненной
команды.
29
30.
Обратные апострофыСуществует другой способ выполнения системных команд, не
требующий вызова функций, — выполняемая команда заключается
в обратные апострофы (` `), а результаты ее работы отображаются в
браузере.
Пример:
$output = `ls`;
print "<pre>$output</pre>";
Этот фрагмент выводит в браузер содержимое каталога, в котором
находится сценарий.
30
31.
Работа с файловой системойФункция 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
32.
Работа с файловой системойФункция stat( )
- возвращает индексируемый массив с подробной информацией о файле с
заданным именем. Синтаксис: stat(имя_файла)
В элементах массива возвращается следующая информация:
0 Устройство
1 Индексный узел (inode)
2 Режим защиты индексного узла
3 Количество ссылок
4 Идентификатор пользователя владельца
5 Идентификатор группы владельца
6 Тип устройства индексного узла
7 Размер в байтах
8 Время последнего обращения
9 Время последней модификации
10 Время последнего изменения
11 Размер блока при вводе/выводе в файловой системе
12 Количество выделенных блоков
32
33.
Работа с файловой системойПример:
$file - "datafile.txt";
list($dev, $inode, $inodep, $nlink, $uid, $gid, $inodev, $size, $atime, $mtime,
$ctime, $bsize) = stat($file);
print "$file is $size bytes. <br>";
print "Last access time: $atime <br>";
print "Last modification time: $mtime <br>";
Результат:
datafile.txt is 289 bytes.
Last access time: August 15 2007 12:00:00
Last modification time: August 15 2007 10:07:18
33
34.
Копирование, переименование и удаление файловФункция сору( )
Синтаксис:
copy (источник, приемник)
Функция сору( ) пытается скопировать файл источник в файл
приемник; в случае успеха возвращается TRUE, а при неудаче —
FALSE.
Если файл приемник не существует, функция сору( ) создает его.
Пример:
$data_file = "datal.txt";
copy($data_file, $data_file'.bak') or die("Could not copy $data_file");
34
35.
Копирование, переименование и удаление файловФункция rename( )
- переименовывает файл. В случае успеха возвращается TRUE, a
при неудаче — FALSE. Синтаксис:
rename (старое_имя, новое_имя)
Пример:
$data_file = "datal.txt";
rename($data_file, $datafile'.old') or die ("Could not rename $data_file");
Функция unlink( )
- удаляет файл с заданным именем. Синтаксис:
unlink (файл)
35
36.
Работа с каталогамиФункция 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
37.
Работа с каталогамиФункция is_dir( )
- проверяет, является ли файл с заданным именем каталогом:
is_dir (имя_файла)
Пример:
$isdir = is_dir("index.html"); // Возвращает FALSE
$isdir = is_dir("book"); // Возвращает TRUE
37
38.
Работа с каталогамиФункция mkdir( )
— создает новый каталог. Синтаксис:
mkdir (путь, режим)
Параметр путь определяет путь для создания нового каталога.
Необходимо завершить параметр именем нового каталога.
Параметр режим определяет разрешения, назначаемые созданному
каталогу. Права доступа задаются только для каталогов UNIX,
поскольку в Windows этот аргумент игнорируется.
Пример:
$flag = mkdir ("c:/temp/test", 0700);
if($flag)
{
else
{
echo("Каталог успешно создан"); }
echo("Ошибка создания каталога"); }
38
39.
Работа с каталогамиФункция opendir( )
- открывает дескриптор для работы с каталогом. Синтаксис:
opendir (путь)
Функция closedir( )
- закрывает дескриптор каталога, переданный в качестве параметра.
Синтаксис:
closedir(дескриптор_каталога)
Функция readdir( )
- возвращает очередной элемент заданного каталога. Синтаксис:
readdir(дескриптор_каталога)
Пример: Вывод списка всех файлов и подкаталогов в текущем каталоге:
$dh = opendir( . );
while ($file = readdir($dh)) :
print "$file <br>"; endwhile;
closedir($dh);
3939
40.
Работа с каталогамиФункция 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 <br>";
endwhile;
closedir($dh);
40
41.
Работа с каталогамиФункция rewinddir( )
- переводит указатель текущей позиции в начало каталога, открытого
функцией opendir( ).
Синтаксис:
rewinddir (манипулятор_каталога)
41
42.
ПримерСчетчик обращений
<?
$access = "hits.txt"; // файл, в котором будет храниться значение
счетчика
$visits = &file($access); // чтение содержимого файла в масссив
$current_visitors = $visits[0]; // извлечение первого элемента
++$current_visitors; // Увеличить счетчик обращений
$fh = fopen($access, "w"); // Открыть файл hits.txt и установить
// указатель текущей позиции в начало файла
fwrite($fh, $current_visitors);// Записать новое значение счетчика
// в файл "hits.txt"
fclose($fh); // Закрыть дескриптор файла "hits.txt"
?>
42