File and directory operations
PHP is very convenient for processing files and directories on the local server, but sometimes permissions and path-related issues may arise
1.Open the file
resource fopen ( string filename, string mode [, bool use_include_path [, resource zcontext]] )
$handle = fopen(filename,mode)//Open the file and return the handle representing the resource of this file
The file name can use relative path or absolute path or network protocol mode. The opening mode has rr+ww+aa+xx+b
If you don't specify the 'b' flag when working with binary files, you may encounter some strange problems, including corrupted image files and strange issues with the rn character.
For portability reasons, it is strongly recommended to always use the 'b' flag when opening files with fopen().
Here are several ways to open files
$fp = @fopen('log.txt',"rb");
$fp = @fopen('../log.txt',"rb");
$fp = @fopen("http://www.runer.com.cn/default.htm","rb");//You can also use protocols such as ftp and ghoper. The allow_url_fopen option in the php.ini file must be enabled.
//////////////////////////////Code part///////////////////// /////////////////////
$filename1 = "userinfo.txt"; //This file exists in the directory or include_path
$filename2 = "test.txt"; //This file does not exist in the directory or include_path
$resource1 = fopen($filename1,"rb");
@$resource2 = fopen($filename2,"rb");//Because this file does not exist in the directory, and the include_path or include_path is not used to find the path of the included file, this operation will report an error. Using the error suppressor @ can force the browser to No error message is output
if($resource1)
echo "Open file {$filename1} successfully";
if(!@fopen($filename2,"r"))
echo "Failed to open file {$filename2}";
///////////////////////////////////////////////////// /////////////////////////
---------------------Output results-------------------------- -------------
Opened file userinfo.txt successfully
-------------------------------------------------- ------------------
2. After using the file, you must explicitly tell PHP that the file has been used, so that the operating system ensures that all the contents of the file are correctly flushed from the buffer to the hard disk
Use fclose() to close the file,
bool fclose (resource handle)//Close an open file pointer
3. Read files. The mode parameter of the fopen function allows reading. PHP provides several functions to read data from files
string fgets ( int handle [, int length] ) reads a line from a file pointer, trying fgets on a binary file produces unpredictable results
If the length is not specified, 1K data will be read by default, and it will stop after encountering a newline character (included in the return value), EOF, or length - 1 bytes have been read
string fgetss ( resource handle [, int length [, string allowable_tags]] ) reads a line from the file pointer and filters out HTML tags
fgetc() reads a single character
fread() reads any binary data
//////////////////////////////Code part///////////////////// /////////////////////
$handle = fopen ("test.jpg", "rb");
$c;
while (!feof($handle)) {
$contents .= @fread($handle, 8192);//Loop reading and merge it into a large file
}
fclose($handle);
///////////////////////////////////////////////////// //////////////////////////
---------------------Output results-------------------------- -------------
-------------------------------------------------- ------------------
4. Determine the status of file reading
Each file handle has a file pointer, or a cursor that indicates where in the file the next operation will occur, according to the mode parameter of the fopen function
The file pointer is initially located at the beginning of the file (0), or the end of the file
feof() can determine whether the file has reached the end (the function returns TRUE after reaching the end)
The filesize() function returns the size of the file 5. Write the file
The fwrite() function executes file writing
//////////////////////////////Code part///////////////////// /////////////////////
$filename = 'test.txt';
$somec;
// First we need to make sure the file exists and is writable.
if (is_writable($filename)) {
// In this example, we will open $filename using add mode,
// Therefore, the file pointer will be at the beginning of the file,
// That's where $somecontent will be written when we use fwrite().
if (!$handle = fopen($filename, 'a')) {
echo "Cannot open file $filename";
exit;
}
// Write $somecontent to the file we opened.
if (fwrite($handle, $somecontent) === FALSE) {
echo "Cannot write to file $filename";
exit;
}
echo "Successfully written $somecontent to file $filename";
fclose($handle);
} else {
}
echo "File $filename is not writable";
///////////////////////////////////////////////////// //////////////////////////
---------------------Output results-------------------------- -------------
Successfully added these text to the file and wrote it to the file test.txt
-------------------------------------------------- ------------------
For binary data, the third parameter must be specified, which contains the number of data bytes written to disk
$result = @fwrite($fp,$binary_data,mb_strlen($binary_data,'8bit'));
|
||
|