首页 > 技术文章 > 文件编程

lijian-cn 2019-11-28 17:43 原文

文件编程

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是关闭数据流

文件打开模式主要有下面几种:

05.png

比如是只读模式:

$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/>';
        }
    }
}

推荐阅读