Функцията
fseek()
Можете да използвате функцията fseek(), за да зададете текущата
позиция във файл. Синтаксисът на функцията е следният:
int fseek(int
файлов_манипулатор, int отместване, int база);
В горният синтаксис
първият аргумент е файлов манипулатор, който задава файла върху който ще се
изпълни функцията. Следващият аргумент отместване, е цяло число, което задава
новата текуща позиция във файла. Третия аргумент база, задава как да се извърши
изчислението на новата позиция. Стойностите на двата аргумента отместване и база
представляват брой байтове.
Аргументът база има следните три стандартни
стойности:
SEEK_SET Текущата позиция се премества от началото на
файла на зададения брой байтове от параметъра отместване.
SEEK_CUR Текущата позиция се изчислява, като към текущата позиция във файла се добавят
броят байтове, зададени в параметъра отместване.
SEEK_END Текущата
позиция се изчислява като сума от дължината на файла и броя байтове, зададени в
параметъра отместване.
За да разберете по-добре как действа функцията
fseek(), разгледайте следния пример:
| <?php $file = "data1.dat"; // Отваряне на файла data1.dat $fo = $fopen($file, "r") or die ("Не може да се намери файла"); // Определяне на дължината на data1.dat $file_length = filesize($file); echo "n"; echo "Рамерът на файла: $file_length.", "n"; // Позициониране на 22 байт във файла $fs = fseek($fo, 22, SEEK_CUR); // Прочитане на 6 символа от текущата позиция във файла $current_char = fread($fo, 6); echo "В момента текущата позиция е върху символа $current_char"; ?> |
| dataformat = "A20A50A200A4A2A10A6"; $line = pack ($dataformat, $name, $addres, $email, $gander, $birth_mounth, $comedy, $hobies[0]); echo $line,"<br>",strlen($line); $fp = @fopen("data.dat","w+") or die ("Не може да се отвори файла"); // Запис във файла $result = @fwrite($fp, $line) or die ("Не може да се запишат данните във файла"); fclose($fp); |