文件编程
5.1 文件操作函数
(1)file()函数
file()是读取文件里面的内容,返回值是数组,文件里面的每一行当做数组的一个元素 假设有一个01.txt,内容如下:
我是中国人
我很爱国
我生活在保定
我会好好学习
那么我们通过file()读取文件中的内容
$arr=file('./01.txt');
echo '<pre>';
print_r($arr);
echo '</pre>';
页面显示效果如下:
Array
(
[0] => 我是中国人
[1] => 我很爱国
[2] => 我生活在保定
[3] => 我会好好学习
)
fopen() fgets() fclose()
打开文件并读取里面的内容还可以通过下面的三个步骤来实现:
fopen(‘文件路径’,打开模式)
fgets是读取文件内容
fclose是关闭数据流
文件打开模式主要有下面几种:
比如是只读模式:
$handle=fopen('./01.txt','r');//打开文件资源
echo fgets($handle);//读取第一行的内容
echo fgets($handle);//读取第二行的内容
fclose($handle);
比如是写入模式(头部添加)
如果是w模式,会调用fwrite函数向文件内写入内容,文件指针指向文件头(原有内容会清空),如果文件不存在会创建。 比如是w模式:
$handle=fopen('./01.txt','w');
fwrite($handle,'我是新增加的');
fclose($handle);
原01.txt中内容会被覆盖掉,显示如下:
我是新增加的
比如是a模式(尾部追加)
$handle=fopen('./01.txt','a');
fwrite($handle,'我是新增加的');
fclose($handle);
原页面中的内容显示如下:
我是中国人
我很爱国
我生活在保定
我会好好学习我是新增加的
file_get_contents
file_get_contents() 函数把整个文件读入一个字符串中。
代码如下:echo file_get_contents('01.txt');
页面显示结果如下:
我是中国人 我很爱国 我生活在保定 我会好好学习我是新增加的
file_put_contents('文件路径','写入的数据','模式')
代码如下:
file_put_contents('./01.txt','hello world',FILE_APPEND);
这样就会在原来的文件中追加hello world字符串。
如果是这样的代码:
file_put_contents('./01.txt','hello world',LOCK_EX);
可以在文件中添加hello world,把原来的内容覆盖掉,防止多人同时写入
路径相关信息
pathinfo会返回一个数组是文件路径的相关信息
dirname:文件目录名
basename:文件完整名
extension:文件后缀
filename:只是文件名字
realpath(‘文件地址’)返回的是文件所在的绝对路径
所以代码如下:
$arr=pathinfo('./01.txt');
echo '<pre>';
print_r($arr);
echo '</pre>';
浏览器显示效果如下:
Array
(
[dirname] => .
[basename] => 01.txt
[extension] => txt
[filename] => 01
)
判断文件是否存在
$res=file_exists('./01.txt');
if($res){
正常读取文件
}else{
echo '文件不存在';
}
feof
feof()是否读取到了文件的末尾
$res=file_exists('./01.txt');
if($res){
$handle=fopen('./01.txt',r);
while(!feof($handle)){
echo fgets($handle).'<br/>';//读取一行的信息
}
fclose($handle);//关闭文件流
}else{
echo '文件不存在';
}
copy() 复制文件
copy(源文件地址,目标文件地址);是复制文件的意思
copy('./01.txt','./02.txt');
set_include_path
我们要在文件中引入test文件夹下面的两个文件,我们会这样引入
include 'test/01.html';
include 'test/02.html';
但是上面的写法会很麻烦,我们一般会在页面中如下设置:
set_include_path('test/');
以后我们再需要引入页面文件的时候就这样写:
include '01.html';
include '02.html';
move_upload_file
这个方法是移动上传文件的地址
提交页面如下:
<form action="01.php" method="post" enctype="multipart/form-data">
<input type="file" name="filename">
<input type="submit" value="提交">
</form>
<img src="01.png" alt="">
接收的php页面如下:
$arr=$_FILES['filename'];
echo '<pre>';
print_r($arr);
echo '</pre>';
move_uploaded_file($arr['tmp_name'],'./01.png');
5.2 目录操作函数
(1)mkdir
mkdir:使用mkdir创建文件夹,如果文件夹已经存在,那么会提示错误,这个时候用错误抑制符@抑制错误即可。(Linux中可以指定权限)
mkdir('aa');
这样就会生成一个名字是aa的目录
(2)rmdir
rmdir:使用rmdir删除文件夹,如果文件夹不存在,那么会提示错误,这个时候用错误抑制符@抑制错误即可。
rmdir('aa');
这样就会把刚创建的文件夹aa删除掉。
(3)scandir
$info=scandir('目录的地址');
假设我们有一个文件夹叫images,里面有各种图片文件,我们需要把里面的图片名称遍历出来。
$info=scandir('test/images');
foreach ($info as $key=>$value){
if($value!='.'&&$value!='..'){
$arr=pathinfo($value);
if($arr['extension']=='jpg'||$arr['extension']=='png'){
echo $arr['basename'].'<br/>';
}
}
}