php实现文件读写操作
文件读取操作
使用file_get_contents函数可以快速读取整个文件内容到一个字符串中。适合读取小文件,简单高效。
$content = file_get_contents('example.txt');
echo $content;
fopen配合fread适合处理大文件或需要逐行读取的场景。通过指定读取模式(如'r')和缓冲区大小控制读取过程。
$handle = fopen('example.txt', 'r');
$content = fread($handle, filesize('example.txt'));
fclose($handle);
file函数将文件按行读取到数组中,每行作为数组的一个元素。适合需要按行处理的场景。
$lines = file('example.txt');
foreach ($lines as $line) {
echo $line;
}
文件写入操作
file_put_contents函数提供最简单的写入方式,可覆盖或追加内容。通过FILE_APPEND参数实现追加写入。
// 覆盖写入
file_put_contents('output.txt', 'Hello World');
// 追加写入
file_put_contents('output.txt', "\nNew line", FILE_APPEND);
fopen配合fwrite支持更灵活的写入控制。需要手动关闭文件句柄防止资源泄漏。
$handle = fopen('output.txt', 'w');
fwrite($handle, 'First line');
fwrite($handle, "\nSecond line");
fclose($handle);
文件指针操作
ftell获取当前指针位置,fseek移动指针位置,rewind重置指针到文件开头。适用于需要随机访问的场景。
$handle = fopen('example.txt', 'r');
fseek($handle, 10); // 移动到第10字节
echo ftell($handle); // 输出当前位置
rewind($handle); // 重置到开头
fclose($handle);
错误处理
文件操作时应始终检查操作结果并处理可能出现的错误。is_readable和is_writable可预先检查权限。
if (!file_exists('example.txt')) {
die('文件不存在');
}
if (!is_writable('output.txt')) {
die('文件不可写');
}
二进制文件处理
使用'b'模式标记处理二进制文件,如图片或可执行文件。防止不同系统下的换行符转换问题。
// 二进制读取
$handle = fopen('image.jpg', 'rb');
$data = fread($handle, filesize('image.jpg'));
fclose($handle);
// 二进制写入
$handle = fopen('copy.jpg', 'wb');
fwrite($handle, $data);
fclose($handle);
临时文件处理
tmpfile创建临时文件,脚本结束后自动删除。sys_get_temp_dir获取系统临时目录路径。
$temp = tmpfile();
fwrite($temp, "Temporary data");
fseek($temp, 0);
echo fread($temp, 1024);
// 脚本结束自动删除






