Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в Веб программирование.doc
Скачиваний:
81
Добавлен:
07.11.2018
Размер:
4.42 Mб
Скачать

Чтение и запись бинарных файлов

Чтение данных из файла: string fread (int $fp, int length). Функция осуществляет чтение до length байт из файла, адресуемого указателем fp. Чтение прекращается, если будет считано указанное количество байт, или будет достигнут конец файла.

Запись данных в файл: int fwrite (int $fp, string str [, int length])

Функция производит запись содержимого строки string в файл, адресуемый указателем fp. Если задан аргумент length, операция записи прекращается после вывода указанного количества символов, либо при достижении конца строки.

<? //pr416

$open=fopen("my_file.txt","w+");

//Очищаем файл и добавляем в него строку,

//если файл не существует, то он создаётся:

fwrite($open,"строка\r\n");

fclose($open);

//Добавляем новую строку в конец файла:

$open=fopen("my_file.txt","a");

fwrite($open,"новая строка\r\n");

fclose($open);

?>

В созданном файле my_file.txt будут записаны две строки

строка

новая строка

Загрузка всего файла: array file (string filename [, int use_include_path]). Функция file() записывает запрошенный файл в массив. При этом каждый элемент массива представляет собой одну строку файла. Символ новой строки, является последним символом каждой строки.

<? //pr417

//Создаём массив $array, где каждый индекс будет равняться номеру строки в файле:

$array=file("pr417.php");

print_r($array);

$count=count($array); // количество строк в файле

echo $count;

?>

Будет выведено:

Array ( [0] => //Создаём массив $array, где каждый индекс будет равняться номеру строки в файле: [2] => $array=file("php416.php"); [3] => print_r($array); [4] => //Подсчитываем количество строк в файле: [5] => $count=count($array); [6] => echo $count; [7] => ?> ) 8

<?php //php418.php - вывод строк из файла

$fi="php418.php"; // имя файла

$array=file($fi);

//Считываем из файла первые 3 строки:

echo "<hr>";

$n=3; //количество считываемых строк

for($i=0;$i<$n;$i++)

{print "$i : $array[$i],'\n'"; }

for($i=(count($array)-$n-1);$i<count($array)-1;$i++)

{ echo "$i : $file[$i],'\n'"; }

?>

Будет выведено три первых и три последних строки:

0 : <?php //php418.php - вывод строк из файла ,

' '1 : $fi="pr418.php"; // имя файла ,

' '2 : $array=file($fi); ,

' '10 : { echo "$i : $array[$i],'\n'"; } ,

' '11 : ,

' '12 : ?> ,' '

Объединяем 2 файла в один массив $new_array:

<? //pr419

$files=array(

"php416.php", # первый файл

"php417.php" # второй файл

);

for($i=0;$i<count($files);$i++)

{

$array[]=file($files[$i]);

}

while(list(,$result)=each($array))

{

for($i=0;$i<count($result);$i++)

{ $new_array[]=$result[$i]; }

}

print_r($new_array); #выводим массив

?>

Пример. Удаление указанной строки из файла:

<?

$line="1"; # строка, которую нужно удалить

$file=file("my_file.txt");

$open=fopen("my_file.txt","w");

for($i=0;$i<count($file);$i++)

{

if(($i+1)!=$line){fwrite($open,$file[$i]);}

}

fclose($open);

?>

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

<?

$line="1"; # строка, которую нужно изменить

$replace="du du du"; # на что нужно заменить

$filarr=file("my_file.txt");

$f=fopen("my_file.txt","w");

for($i=0;$i<count($filarr);$i++)

{

if(($i+1)!=$line){fwrite($f,$file[$i]);}

else{fwrite($f,$replace."\r\n");}

}

fclose($f);

?>

Поиск слова в файле. Ищем в файле file.txt слово привет:

<?PHP

$word="привет"; # искомое

$f="file.txt"; # имя файла, в котором будем искать слово

$open=fopen($file,"r");

while(!feof($open)) $search.=fgets($open,1024);

fclose($open);

if(eregi(strtolower($word),strtolower($search)))

{ echo "Слово ".$word." - найдено"; }

else

{ echo "Слово ".$word." - не найдено"; }

?>

Прямой доступ к указанной позиции бинарного файла осуществляется с помощью функции fseek (): fseek($file, $offset [, $reference]);

где $file — поток, $offset указывает число байт смещения от позиции, определяемой третьим параметром $reference. Последний принимает одно из значений :

$reference =SEEK_SET (по умолчанию) от начала файла, $reference=SEEK_CUR от текущей позици файла, SEEK_END от байта, следующиго за концом файла.

Функция fseek () может использоваться только для файлов, расположенных в локальной файловой системе и не работает с файлами, которые открываются удаленно по протоколу HTTP или FTP. Функция fseek () возвращает нуль в случае успешного завершения и -1 в случае, если указатель файла не может быть установлен. Отсчет смещений указателя в fseek () начинается с нуля. Чтобы установить указатель файла в позицию $offset, функции fseek () необходимо передать параметр $offset-l.

Копирование одного файла в другой можно выполнить с помощью функции copy(filefrom,fileto);. Функция unlink(filename) –удаляет файл. Функция rename(oldname, newname)-переименовывает файл.