PHP中的文件操作和目录操作
file_get_countents
file_get_contents($filename); // 获取一个文件的内容或一个网络资源的内容.
读取文件和网络资源比较快捷的函数,帮助封装了打开/关闭等操作。
缺点:该函数是一次性把内容全部读出来,放在内存中.因此,如果处理上百兆的大文件,慎用此函数。读取的文件必须要求存在,否则会警告
<?php $fileFile = './a.txt'; $fileCoutent = file_get_contents($fileFile); echo $fileCoutent; echo file_get_contents('http://www.linxingzhang.com'); ?>
file_put_counents
file_put_contents($filename, $data); 该函数用来把内容写入到文件,快捷函数,帮助封装打开写入的细节
<?php file_put_contents('./b.txt', '嘻嘻哈哈'); ?>
判断数据类型
isset(); 变量是否已经声明
empty(); 变量是否为空
defined(); 常量是否已经定义 define();
array_key_exists(mixed key, array serach); 检查给定的键名或索引是否存在于数组中
is_numeric(mixed var); 检测给定的键名或索引是否存在于数组中
is_bool(); 检测变量是否是布尔型
is_float(); 检测变量是否是浮点型 和 is_double(), is_real() 都一样的用法
is_int(); 检测变量是否是整型is_integer() 一样的用法
is_string(); 检测变量是否是字符串
is_object(); 检测变量是否是一个对象
is_array(); 检测变量是否是数组
is_null(); 检测变量是否为NULL
fopen&fread&fwrite&fclose
fopen($filename, $mode)
参数1:路径
参数2:模式 如:只读模式,如:读写模式,如:追加模式
打开一个文件,返回一个句柄资源
返回值:资源。(通道的作用,沿着通道就能够操作文件。获取了修改这个文件的资格)
fread($handle, $length)
参数1: 资源标识
参数2:读取的长度
返回值:所读取的字符串
读取文件
fwrite($handle, $string);
参数1:资源标识
参数2:内容
返回值:成功字符串数,失败返回false
写入文件
fclose($handle);关闭资源
<?php $file = './a.txt'; // 返回获取资格的标识 $fh = fopen($file, 'r'); // 沿着上面返回的$fn资源通道来读文件 echo fread($fh, 10); $rs = fwrite($fh, 'xixihaha'); echo $rs; // 0 // 只读,不允许写入 fclose($fh); ?>
<?php $file = './a.txt'; // r+ 读写模式, 并把指针指向文件头 // 覆盖相等字节的字符串 $fh = fopen($file, 'r+'); $rs = fwrite($fh, 'hahahaha'); echo $rs; echo '<hr />'; // w 写入模式(fread读取不了), 并把文件大小截为0(文件被清空了),指针停于开头处 $file = './modew.txt'; $fh = fopen($file, 'w'); fclose($fh); echo 'ok'; // a 追加模式 能写,并把指针停止在文件的最后. $fh = fopen('./modea.txt', 'a'); echo fwrite($fh, '嘻嘻哈哈'); fclose($fh); ?>
file
批处理名单
第一种办法:
<?php $file = './custom.txt'; $cont = file_get_contents($file); print_r( explode("\n", $cont) ); /** * 各个操作系统下,换行符并不一致 * win: \r\n * *nix: \n * mac: \r */ ?>
第二种办法:
<?php // 第二种 // 打开,一点点的读取,每次读取一行. // fgets(); 每次读取一行 $file = './custom.txt'; // $mode 可以加`b`,表示以2进制来处理,不受编码的干扰. $fh = fopen($file, 'rb'); // feof(), end of file 的意思 // 判断指针是否已经到结尾 while ( !feof($fh) ) { echo fgets($fh) , '<br />'; } ?>
第三种办法:
file(); 直接读取文件内容,并按行拆成数组,返回该数组.
和 file_get_contents(); 的相同之处:一次性读入,大文件慎用.
<?php // file(); $file = './custom.txt'; $arr = file($file); print_r($arr); ?>
file_exists
file_exists 检查文件或目录是否存在file_exists($filename);
<?php // 判断文件是否存在 // 获取文件的创建时间/修改时间 $file = './custom.txt'; if ( file_exists($file) ) { echo $file, '存在', '<br />'; echo '上次修改时间:', date('Y-m-d H:i:s', filemtime($file)), '<br />'; echo '修改时间:', date('Y-m-d H:i:s', filectime($file)), '<br />'; } ?>