Constants for common file functions
The following constant is the most commonly used. Is a constant that is the delimiter of the file directory.
Let’s take a look at the format:
The path format of windows is d:\xxx\xxx Note: Windows supports d:/xxx/xxx
The path format of Linux is /home/xxx/xxx Note: If \home\xxx\xxx is wrong on Linux
So when If you enable escaping, etc., if the escape characters \ are used together, d:\xxx\xxx will be the same. When judging, if there are two \, convert it into one \ and replace the \ with / to split the path, so that the paths on Linux or Windows can remain unified.
We will use a constant:
DIRECTORY_SEPARATOR
Let’s write a small example to define the path of the current file:
Since FILE is PHP’s default Constants are defined, so there is no way to change them. If necessary, FILE can also adapt to the operating system.
Then don’t use FILE. You can use custom constants and process FILE, as follows:
<?php $_current_file = str_replace(array('/', '\'), DIRECTORY_SEPARATOR, __FILE__); define('__CUR_FILE__', $_current_file); echo __CUR_FILE__; ?>
File pointer operation function
rewind (resource handle)
Function: The pointer returns to the beginning
fseek (resource handle, int offset [, int from_where])
Function: The file pointer moves backward Specified characters
In the previous reading, we found that fread reads data of the specified length. Read the content of the specified length. The next time you read it, start from the original position and then read backward.
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????. The false color of the file is read from A to C
opqrst
uvwxyz12345678
We can start an experiment .
<?php $fp = fopen('output.txt', 'r+'); //讀取10個字符 echo fread($fp,10); //指針設(shè)置回到開始處 rewind($handle); //再讀取10次看看輸出的是什么 echo fread($fp,10); //文件指針向后移動10個字符 echo fseek($fp,10); //再看看文件中輸出的是什么 echo fread($fp,10); fclose($handle); ?>
In the above example, you will find that fseek will move as many bytes as the specified length. And rewind returns to the beginning of the file every time.
How to move to the end? We can count the number of bytes. Move directly to the back during fseek.
<?php $filename = 'demo.txt'; echo $filename . '文件大小為: ' . filesize($filename) . ' bytes'; ?>Other functions for operating filesIn fact, there are some other functions for operating files , read the file
We use an example to use all the above functions.
We write a batch of files in the demo.txt file:
abcdeefghijklk
opqrst
uvwxyz
12345678
<?php //以增加的r模式打開 $fp = fopen('demo.txt','r+'); //你分發(fā)現(xiàn)每次只讀一個字符 echo fgetc($fp); //我要全部讀取可以,讀取一次將結(jié)果賦值一次給$string while($string = fgetc($fp)){ echo $string; } ?>
fgets opens one line at a time :
<?php //以增加的r模式打開 $fp = fopen('demo.txt','r+'); //你分發(fā)現(xiàn)每次只讀一個字符 echo fgets($fp); echo fgets($fp); echo fgets($fp); echo fgets($fp); ?>
With the above code, you will find that each read opens one line at a time. The final read return is false.
Let’s look at the file interception function next:
<?php //打開我們上面的demo.txt文件 $file = fopen("demo.txt", "a+"); //你可以數(shù)數(shù)20個字有多長,看看是不是達(dá)到效果了 echo ftruncate($file,20); fclose($file); ?>
In the above example, we found that the content can be displayed as long as it is intercepted.
<?php $filename = 'demo.txt'; if (file_exists($filename)) { echo "$filename文件的上次訪問時間是: " . date("Y-m-d H:i:s", fileatime($filename)); echo "$filename文件的創(chuàng)建時間是: " . date("Y-m-d H:i:s", filectime($filename)); echo "$filename文件的修改時間是: " . date("Y-m-d H:i:s", filemtime($filename)); } ?>