写文件
在PHP中写文件比较简单。直接用fwrite()函数即可。
fwrite()的原型如下

int fwrite(resource handle/string string [">

Home  >  Article  >  Backend Development  >  PHP file operation implementation code sharing_PHP tutorial

PHP file operation implementation code sharing_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 15:24:21796browse

Writing or reading data into a file is basically divided into three steps:
1. Open a file (if it exists)
2. Write/read the file
3. Close the file
lOpen File
Before opening a file, we need to know the path of the file and whether the file exists.
Use the $_SERVER["DOCUMENT_ROOT"] built-in global variable to obtain the relative path of the site. As follows:
$root = $_SERVER["DOCUMENT_ROOT"];
Use function file_exists() to detect whether the file exists. As follows:
If(!file_exists("$root/order.txt")){echo 'The file does not exist';}
Next use the fopen() function to open the file.
$fp = fopen("$root/order.txt",'ab');
fopen() function accepts 2, 3 or 4 parameters.
The first parameter is the file path, and the second parameter is the operation mode (read/write/append, etc.), which is a required parameter.
$fp = fopen("$root/order.txt",'ab');
The third parameter is optional. If you need PHP to search for a file in include_path, you can use it. It is not required. Provide a directory name or path.
$fp = fopen("order.txt",'ab',true);
The fourth parameter is also optional, allowing the file name to start with the protocol name (such as http://) and be in a Opening this file in a remote location also supports some other protocols, such as ftp, etc.
If fopen() successfully opens a file, it returns a pointer to the file. Above we saved it to the $fp variable.

Attached file mode diagram


Writing Files
Writing files in PHP is relatively simple. Just use the fwrite() function directly.
The prototype of fwrite() is as follows

int fwrite(resource handle, string string [,int length]);

The third parameter is optional and indicates the file to be written. maximum length.
The length of the string can be obtained through the built-in strlen() function, as follows:

fwrite($fp,$outputinfo,strlen($outputinfo));

This function tells PHP to The information in $outputinfo is saved to the file pointed to by $fp.
lRead file
1. Open the file in read-only mode
Still use the fopen() function, but to open the file in read-only mode, use the "rb" file mode. As follows:

$fp = fopen("$root/order.txt",'rb');
2. Know when the file has been read
We use a while loop to read the file content , use the feof() function as the termination condition of the loop condition. As follows:

while(!feof($fp)){
//Information to be processed
}
3. Read one row of records each time
fgets() function can Read a line from a text file. As follows:

Copy code The code is as follows:

$fp = fopen("$root/order.txt",'rb ');
while(!feof($fp)){
$info = fgets($fp,999);
echo $info.'
';
}
fclose($fp);

In this way, it will continue to read data until it reads a newline character (n) or the end of file character EOF, or reads 998B from the file. The maximum length that can be read is the specified length minus 1B.
4. Read the entire file
PHP provides 4 different ways to read the entire file.
a).readfile() function
It can be used directly without fopen($path) and closing the file first, and without echo. As follows:
readfile(“$root/order.txt”);
It will automatically output the file information to the browser. Its prototype is as follows:
Int readfile(string filename,[int use_include_path[,resource context]]);
The second optional parameter specifies whether PHP searches for files in include_path, which is the same as the fopen function , the return value is the total number of bytes read from the file.
Note: Use it directly without fopen or fclose
b).fpassthru() function
To use this function, you must first open a file with fopen(). Then pass the file pointer as a parameter to fpassthru(), so that the contents of the file pointed to by the file pointer can be output. Then close the file. As follows:
$fp = fopen(“$root/order.txt”,'rb');
fpassthru($fp);
fclose($fp);
The return value is also from The total number of bytes read in the file.
Note: fopen and fclose are required
c).file() function
In addition to outputting the file to the browser, it is the same as the readfile() function. It sends the result to an array. As follows:
$fileArray = file(“$root/order.txt”);
Each line in the file will be used as each element of the array.
Note: Use it directly without fopen and fclose
d).file_get_contents() function
is the same as readfile(), but this function will return the file content in the form of a string instead of directly Output to the browser, that is, echo output must be used, as follows:

echo file_get_contents(“$root/order.txt”);
Note: use it directly without fopen and fclose
5 .Read one character
The fgetc() function reads one character at a time from a file, it has a file pointer function, which is also the only parameter, and it returns the next character. As follows:
Copy code The code is as follows:

$fp = fopen("$root/order.txt",'rb ');
while(!feof($fp)){
$char = fgetc($fp);
if(!feof($fp)){
echo ($char == "n" ? '
' : $char);
}
}
fclose($fp);

Note: fgetc() function One disadvantage is that it returns the end-of-file character EOF, while fgets() does not. After reading the characters, you still need to judge feof().
6. Read any length
The fread() function is to read bytes of any length from the file. The function prototype is as follows:

string fread(resource fp, int length);
When using this function, it either reads the number of bytes specified by the length parameter, or reads the end of the file.
Copy code The code is as follows:

$fp = fopen("$root/order.txt",'rb') ;
echo fread($fp,10); //Read 10 bytes
fclose($fp);

lClose the file
Close the file is relatively simple, Just call the fclose() function directly. If it returns true, it indicates success, and vice versa. As follows:

fclose($fp);
lDelete file
unlink() function (there is no function named delete), as follows:

unlink("$root/ order.txt");
l Determine the file size
You can use the filesize() function to check the size of a file (in bytes), as follows:
echo filesize("$root/order.txt ");

You can also refer to the following article
The following is an article about basic file reading and writing operations. I once learned the basics of files after reading this article The operation is posted here to share with everyone:
Read the file:
PHP code:
Copy the code The code is as follows:

1. 2.
3. $file_name = "data.dat";
4. // Absolute path of the file to be read: homedata.dat
5.
6. $file_pointer = fopen($file_name, "r");
7. // Open the file, 8. "r" is a mode, 9. Or what we want to do Operation method, 10. See the introduction later in this article
11.
12. $file_read = fread($file_pointer, filesize($file_name));
13. // Read through the file pointer 14. Pointer Get the file content
15.
16. fclose($file_pointer);
17. // Close the file
18.
19. print "The read file content is: $file_read ";
20. // Display file content
21. ?>
22.

Write file:
PHP code:
Copy code The code is as follows:

1. 2.
3. $file_name = "data.dat";
4. // Absolute path: homedata.dat
5.
6. $file_pointer = fopen($file_name, "w");
7. // "w" is a mode, 8. See below for details
9.
10. fwrite($ file_pointer, "what you wanna write");
11. // First cut the file 12. to 0 bytes, 13. then write
14.
15. fclose($file_pointer) ;
16. // End
17.
18. print "Data written to file successfully";
19.
20. ?>
21.

Append to the end of the file:
PHP code:
Copy code The code is as follows:

1. 2.
3. $file_name = "data.dat";
4. // Absolute path: homedata.dat
5.
6. $file_pointer = fopen ($file_name, "a");
7. // "w" mode
8.
9. fwrite($file_pointer, "what you wanna append");
10. // No 11. Cut the file 12. into 0 bytes, 13. Append the data to the end of the file
14.
15. fclose($file_pointer);
16. // End
17 .
18. print "Data successfully appended to file";
19.
20. ?>
21.

The above is just a brief introduction. Next we Discuss something deeper.
Sometimes multiple people write (most commonly on websites with large traffic), which results in useless data being written to the file, for example:
The content of the info.file file is as follows ->
|1|Mukul|15|Male|India (n)
|2|Linus|31|Male|Finland (n)
Now two people are registered at the same time, causing file corruption->
info. file ->
|1|Mukul|15|Male|India
|2|Linus|31|Male|Finland
|3|Rob|27|Male|USA|
Bill|29 |Male|USA
In the above example, when PHP writes Rob's information to the file, Bill also starts writing. At this time, it happens that the 'n' of Rob's record needs to be written, causing the file to be damaged.
We certainly don’t want this to happen, so let’s look at file locking:
PHP code:
Copy code The code is as follows:

1. 2.
3. $file_name = "data.dat";
4.
5. $file_pointer = fopen($file_name , "r");
6.
7. $lock = flock($file_pointer, LOCK_SH);
8. // I use 4.0.2, 9. So use LOCK_SH, 10. You might It needs to be written directly as 1.
11.
12. if ($lock) {
13.
14. $file_read = fread($file_pointer, filesize($file_name));
15 . $lock = flock($file_pointer, LOCK_UN);
16. // If the version is smaller than PHP4.0.2, 17. replace LOCK_UN with 3
18.
19. }
20.
21. fclose($file_pointer);
22.
23. print "The file content is $file_read";
24.
25. ?>
26. 🎜>
In the above example, if both files read.php and read2.php have to access the file, then they can both read it, but when a program needs to write, it must wait until it reads The operation is completed and the file is released.
PHP code:


Copy code The code is as follows:
1. 2.
3. $file_name = "data.dat";
4.
5. $file_pointer = fopen($file_name, "w");
6.
7. $lock = flock ($file_pointer, LOCK_EX);
8. // If the version is lower than PHP4.0.2, 9. replace LOCK_EX with 2
10.
11. if ($lock) {
12.
13. fwrite($file_pointer, "what u wanna write");
14. flock($file_pointer, LOCK_UN);
15. // If the version is lower than PHP4.0.2, replace 16. with 3 LOCK_UN
17.
18. }
19.
20. fclose($file_pointer);
21.
22. print "Data written to file successfully";
23.
24. ?>
25.


Although the "w" mode is used to overwrite files, I don't think it is applicable. PHP code:


Copy code The code is as follows:

1. 2.
3. $file_name = "data.dat";
4.
5. $file_pointer = fopen($file_name, " a");
6.
7. $lock = flock($file_pointer, LOCK_EX);
8. // If the version is lower than PHP4.0.2, 9. Use 2 instead of LOCK_EX
10 .
11. if ($lock) {
12.
13. fseek($file_pointer, 0, SEEK_END);
14. // If the version is less than PHP4.0RC1, 15. use fseek ($file_pointer, filsize($file_name));
16.
17. fwrite($file_pointer, "what u wanna write");
18. flock($file_pointer, LOCK_UN);
19. // If the version is lower than PHP4.0.2, 20. replace LOCK_UN with 3
21.
22. }
23.
24. fclose($file_pointer);
25.
26. print "Data written to file successfully";
27.
28. ?>
29.

Hmmm..., for appending data The other operation is a little different, and that's FSEEK! It's always a good practice to make sure the file pointer is at the end of the file.
If it is under Windows system, the above file needs to be preceded by ''.
FLOCK Miscellaneous:
Flock() only locks the file after it is opened. In the above column, the file is locked after it is opened. Now the content of the file is only the content at that time, and does not reflect the results of other program operations. Therefore, fseek should be used not only for file append operations, but also for read operations.
(The translation here may not be exact, but I think I get the idea).
About the mode:
'r' - Open in read-only mode, the file pointer is placed at the beginning of the file
'r+' - Open in read-write mode, the file pointer is placed at the beginning of the file
'w' - Only Open for writing, the file pointer is placed at the head of the file, the file is cut to 0 bytes, if the file does not exist, try to create the file
'w+' - Open for reading and writing, the file pointer is placed at the head of the file, the file size is cut is 0 bytes, if the file does not exist, try to create the file
'a' - open for writing only, the file pointer is placed at the end of the file, if the file does not exist, try to create the file
'a+' - open for reading and writing , the file pointer is placed at the end of the file. If the file does not exist, try to create the file
By the way, the code for creating the file directory
Copy the code The code is as follows:

//Create a directory similar to "../../../xxx/xxx.txt"
function createdirs($path, $mode = 0777) //mode 077
{
$dirs = explode('/',$path);
$pos = strrpos($path, ".");
if ($pos === false) { // note: three equal signs
// not found, means path ends in a dir not file
$subamount=0;
}
else {
$subamount=1;
}
for ($c=0;$c < count($dirs) - $subamount; $c++) {
$thispath="";
for ($cc=0; $cc < = $c; $cc++) {
$thispath.=$dirs[$cc].'/';
}
if (!file_exists($thispath)) {
//print " $thispath";
mkdir($thispath,$mode); //The mkdir function creates a directory
}
}
}
//Call such as createdirs("xxx/xxxx/xxxx" ,);
//The original function used $GLOBALS["dirseparator"] and I changed it to '/'
function recur_mkdirs($path, $mode = 0777) //mode 0777
{
//$GLOBALS["dirseparator"]
$dirs = explode($GLOBALS["dirseparator"],$path);
$pos = strrpos($path, ".");
if ($pos === false) { // note: three equal signs
// not found, means path ends in a dir not file
$subamount=0;
}
else {
$subamount=1;
}

These are just some basic file operation codes. I believe they are very useful for beginners. I post them here, hoping to inspire others!

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/324316.htmlTechArticleWriting or reading data into a file is basically divided into three steps: 1. Open a file (if it exists ) 2. Write/read the file 3. Close this file l Open the file Before opening the file,...

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn