PHP 文件

创建时间:2019.02.08 修改时间:2019.03.25

检查指定文件是否存在。若存在,打开文件,逐行输出文件内容,关闭文件:

<?php
$path = "a.txt";
if ( file_exists( $path ) ) {
	$file = fopen( $path, "r" );
	while ( !feof( $file ) ) {
	echo fgets( $file )."<br>";
 }
	fclose( $file );
} esle {
	echo " 指定文件不存在!";
}
?>

如果 fopen() 函数无法打开指定文件,则返回 0(false)。

如果 fopen() 函数无法打开指定文件,则生成一段消息:

<?php
$file = fopen( "a.txt", "r" ) or exit( " 无法打开指定文件!" );
?>

参数 r 表示以“只读”模式打开文件。

fgets() 函数逐行读取文件。

fgetc() 函数逐字符读取文件。

注: 在 w、a 和 x 模式下,无法读取打开的文件。

读取逗号分隔符文件(*.csv),存入数组中:

例如 php 代码同目录下的 a.csv 文件,内容如下(注意逗号是英文半角):小王 , 小红 , 小明 , 小凡

<?php
$file = fopen( "a.csv", "r" );
$arr = fgetcsv( $file );
fclose( $file );
//  以下代码输出数组中所有值 
foreach ( $arr as $key=>$value ) {
 echo $value;
}
?>

另外,可调用 file() 函数把整个文件读入一个数组中:

<?php
print_r( file( "a.txt" ) );
?>

文件中每行(包括换行符在内)对应数组中的一个元素。

从文件中读取指定字节数,返回字符串:

<?php
$file = fopen( "a.txt", "r" );
$contents = fread( $file, "10" );
fclose( $file);
?>

另外,可调用 file_get_contents() 函数把整个文件读入到一个字符串中:

<?php
$contents = file_get_contents( "a.txt" );
?>

相当于 fread( "a.txt", filesize( "a.txt" ) );

把字符串写入文件:

<?php
$file = fopen( "a.txt", "w" );
fwrite( $file, "Hello World!" ); //  如果成功,返回字节数 
fclose( $file);
?>

另外,可通过 file_put_contents( "a.txt", "Hello World!" ) 把字符串写入文件。

<?php
file_put_contents( "a.txt", "Hello World!", FILE_APPEND | LOCK_EX );
//  使用  FILE_APPEND  标记,可以在文件末尾追加内容(可选)
// LOCK_EX  标记可以防止多人同时写入(可选)
?>

从打开文件的指针位置开始读取所有数据,并写入到输出缓冲:

<?php
$file = fopen( "a.txt", "r" );
fpassthru( $file );
fclose( $file );
?>

注: 可以调用 rewind() 来将文件指针指向文件头。

另外,可调用 readfile() 函数读取整个文件,并写入到输出缓冲:

<?php
readfile( "a.txt" );
?>

如果成功,该函数返回从文件中读入的字节数。如果失败,该函数返回 FALSE 并附带错误信息。可以在函数名前面添加一个 '@' 来隐藏错误信息。

返回文件上次修改时间:

<?php
echo " 上次修改时间:".date( "Y.y.d H:i:s", filemtime( "a.txt" );
?>

注: 该函数的结果会被缓存。请使用 clearstatcache() 来清除缓存。