美文网首页
PHP -- 文件操作1

PHP -- 文件操作1

作者: 潘肚饿兵哥哥 | 来源:发表于2019-08-05 23:23 被阅读0次

    文件操作:增删改查
    就是:读取、写入、删除这三个操作
    
    ./当前目录
    ../上一层目录
    ../../上两层目录
    相对路径(用的多)
    绝对路径
    
    
    步骤:
        1.打开文件: 
        fopen(filename,mode);   返回值是一个资源
        mode取值(常用的是这6种):
            r(以只读方式打开,文件不存在则尝试创建文件 指针指向文件头)   
            r+(读写方式打开,文件不存在则尝试创建之 指针指向文件头)
                用 r 或 r+ 文件必须存在,否则会报错
             
            w(写入方式打开,文件不存在则尝试创建之 指针指向文件头并删除文件内容) 
            w+(读写方式打开,文件不存在则尝试创建之 指针指向文件头并删除文件内容)
                w会删除文件内容,删除后是不可恢复的,重要文件不能用w写入内容
                w就是删掉之前的内容,并且写入新的内容
            
            a(写入方式打开,追加,文件不存在则尝试创建之 将文件指针指向文件末尾) 
            a+(读写方式打开,读写,文件不存在则尝试创建之 将文件指针指向文件末尾)
            
        2.进行读写操作
        3.关闭文件
        
        读取:
            $str = fread(handle, length);读取文件,返回值类型是字符串  第一个参数是资源,第二个参数是读多长
            fgets($fp);是读取一行,第二个参数是读多长,如果读取的内容带有标签,标签会被解析出来,渲染出标签效果
            fgetss($fp);也是读取一行,但是会过滤掉标签,标签不会被渲染,也不会显示在浏览器中
            fgetss($fp, 512, '<h1>');这个函数第二个参数是读取的长度,第三个参数是保留的标签(如果写了这个标签,他就不会被过滤,还是会被渲染出来)
            
            (也可以用fgets($fp);和strip_tags — 从字符串中去除 HTML 和 PHP 标记 封装一个这个函数出来,同样可以做到fgetss这个函数的效果)
            
            fgetc();只能获取一个英文字符
            
            $file_size = filesize(filename);获取文件内容的长度(因为读取文件第二个参数需要读多长,那就要知道文件有多大)
            file_exists — 检查文件或目录是否存在,在前面加 ! 是表示不存在 
            
        
        
        写入:
        fwrite(handle, string); handle往哪里写,string写入什么


fopen(filename,mode);filename文件名和路径 mode 用什么方式读文件



简易操作文件方式:
不需要打开和关闭文件:
file_put_contents($filename, '你好')w方式(删除之前的内容后写入)
file_put_contents($filename, '你好', FILE_APPEND);a方式,追加内容

删除文件:unlink


//fopen(filename,mode);filename文件名和路径 mode 用什么方式读文件
$filename = '1.txt';
$fp = fopen($filename, 'r');//这个返回值是一个资源
var_dump($fp);
image.png

\color{rgba(3, 101, 100, .8)}{3不代表文件里有三个项,是一个标志}
\color{rgba(3, 101, 100, .8)}{stream表示他是一个流资源}


\color{rgba(254, 67, 101, .8)}{r的情况,先检查文件是否存在}

$filename = '2.txt';
if(!file_exists($filename)){
    //file_exists — 检查文件或目录是否存在,在前面加 ! 是表示不存在
    //echo "文件{$filename}不存在";  不在这里写了,直接在die里输出就可以了
    die("文件{$filename}不存在");//die — 等同于 exit()  输出一个消息并退出
}
$fp = fopen($filename, 'r');//这个返回值是一个资源
var_dump($fp);
image.png

\color{rgba(254, 67, 101, .8)}{读取文件需要知道文件的长度:}

$filename = '1.txt';
if(!file_exists($filename)){
    //file_exists — 检查文件或目录是否存在,在前面加 ! 是表示不存在
    //echo "文件{$filename}不存在";  不在这里写了,直接在die里输出就可以了
    die("文件{$filename}不存在");//die — 等同于 exit()  输出一个消息并退出
}
$fp = fopen($filename, 'r');//这个返回值是一个资源 
//再打开一个文件的同时,先写关闭代码,省的中间写入代码太多,忘记写关闭文件代码

//$str = fread(handle, length);读取文件,返回值类型是字符串  第一个参数是资源,第二个参数是读多长
//$file_size = filesize(filename);获取文件内容的长度(因为读取文件第二个参数需要读多长,那就要知道文件有多大)
//这里获取的是文件的字节数有多大

$file_size = filesize($filename);
$str = fread($fp, $file_size);
echo $str;
fclose($fp);

这样写有一个问题是如果文件太大就麻烦了,所以不建议直接一次性读取文件
可以每次读一部分
image.png

\color{rgba(254, 67, 101, .8)}{正常写法是每次读一点,不一次性全部读完:}

$filename = '1.txt';
if(!file_exists($filename)){
    //file_exists — 检查文件或目录是否存在,在前面加 ! 是表示不存在
    //echo "文件{$filename}不存在";  不在这里写了,直接在die里输出就可以了
    die("文件{$filename}不存在");//die — 等同于 exit()  输出一个消息并退出
}
$fp = fopen($filename, 'r');//这个返回值是一个资源 
//再打开一个文件的同时,先写关闭代码,省的中间写入代码太多,忘记写关闭文件代码

//$str = fread(handle, length);读取文件,返回值类型是字符串  第一个参数是资源,第二个参数是读多长
//$file_size = filesize(filename);获取文件内容的长度(因为读取文件第二个参数需要读多长,那就要知道文件有多大)

$file_size = filesize($filename);

//为了以防文件太大,一点一点的读
//需要知道文件什么时候结束,用feof()
//feof()判断文件指针(这里简单理解为光标)是否到达文件末尾
while(!feof($fp)){//!feof表示到文件末尾就不读了
    $str = fread($fp, 1024);
    echo $str;
}

fclose($fp);
image.png

\color{rgba(254, 67, 101, .8)}{其他的几种读取方法:}

$str = fread($fp, 10); 读取
$str = fgets($fp, 512); 读取一行
$str = fgetss($fp, 512, '<h1>'); 读取一行,过滤html和php标签(但是不过滤这个h1标签)
$str = fgetc($fp);//读取一个英文字符,

$filename = '1.txt';
if(!file_exists($filename)){
    //file_exists — 检查文件或目录是否存在,在前面加 ! 是表示不存在
    //echo "文件{$filename}不存在";  不在这里写了,直接在die里输出就可以了
    die("文件{$filename}不存在");//die — 等同于 exit()  输出一个消息并退出
}
$fp = fopen($filename, 'r');//这个返回值是一个资源 
//再打开一个文件的同时,先写关闭代码,省的中间写入代码太多,忘记写关闭文件代码

//$str = fread(handle, length);读取文件,返回值类型是字符串  第一个参数是资源,第二个参数是读多长
//$file_size = filesize(filename);获取文件内容的长度(因为读取文件第二个参数需要读多长,那就要知道文件有多大)

$file_size = filesize($filename);

//为了以防文件太大,一点一点的读
//需要知道文件什么时候结束,用feof()
//feof()判断文件指针(这里简单理解为光标)是否到达文件末尾
while(!feof($fp)){//!feof表示到文件末尾就不读了
    //$str = fread($fp, 10);  读取
    //$str = fgets($fp, 512);  读取一行
    //$str = fgetss($fp, 512, '<h1>');  读取一行,过滤html和php标签(但是不过滤这个h1标签)
    $str = fgetc($fp);//读取一个英文字符,
    //写在这个while循环里的话,就是一个一个的读取并输出
    
    echo $str;
}

fclose($fp);
image.png

\color{rgba(254, 67, 101, .8)}{r写入: 返回值为0}

$filename = '1.txt';
if(!file_exists($filename)){
    //file_exists — 检查文件或目录是否存在,在前面加 ! 是表示不存在
    //echo "文件{$filename}不存在";  不在这里写了,直接在die里输出就可以了
    die("文件{$filename}不存在");//die — 等同于 exit()  输出一个消息并退出
}
$fp = fopen($filename, 'r');//这个返回值是一个资源 
//再打开一个文件的同时,先写关闭代码,省的中间写入代码太多,忘记写关闭文件代码

//$str = fread(handle, length);读取文件,返回值类型是字符串  第一个参数是资源,第二个参数是读多长
//$file_size = filesize(filename);获取文件内容的长度(因为读取文件第二个参数需要读多长,那就要知道文件有多大)

$file_size = filesize($filename);

$num = fwrite($fp, 'string');//返回值是数字,如果是0,就表示没有写入
//这个例子是以 r只读方式 打开的,所以会返回0
echo $num;
fclose($fp);
image.png

\color{rgba(3, 101, 100, .8)}{fwrite()返回值为0表示一个内容都没有写进去}
\color{rgba(3, 101, 100, .8)}{这里要想写入的话,除了r,其他的方式都可以写入}


\color{rgba(254, 67, 101, .8)}{r+写入:}

$filename = '1.txt';
if(!file_exists($filename)){
    //file_exists — 检查文件或目录是否存在,在前面加 ! 是表示不存在
    //echo "文件{$filename}不存在";  不在这里写了,直接在die里输出就可以了
    die("文件{$filename}不存在");//die — 等同于 exit()  输出一个消息并退出
}
$fp = fopen($filename, 'r+');//这个返回值是一个资源 
//再打开一个文件的同时,先写关闭代码,省的中间写入代码太多,忘记写关闭文件代码

//$str = fread(handle, length);读取文件,返回值类型是字符串  第一个参数是资源,第二个参数是读多长
//$file_size = filesize(filename);获取文件内容的长度(因为读取文件第二个参数需要读多长,那就要知道文件有多大)

$file_size = filesize($filename);

$num = fwrite($fp, 'string');//返回值是6,表示写进去了6个字符
echo $num;
fclose($fp);

\color{rgba(3, 101, 100, .8)}{写入的返回值:}

image.png

\color{rgba(3, 101, 100, .8)}{被写入的文件:}

image.png

\color{rgba(254, 67, 101, .8)}{w写入:删除文件之前的内容后写入}

$filename = '1.txt';
if(!file_exists($filename)){
    //file_exists — 检查文件或目录是否存在,在前面加 ! 是表示不存在
    //echo "文件{$filename}不存在";  不在这里写了,直接在die里输出就可以了
    die("文件{$filename}不存在");//die — 等同于 exit()  输出一个消息并退出
}
$fp = fopen($filename, 'w');//w删除文件的内容,并写入新的内容
//再打开一个文件的同时,先写关闭代码,省的中间写入代码太多,忘记写关闭文件代码

//$str = fread(handle, length);读取文件,返回值类型是字符串  第一个参数是资源,第二个参数是读多长
//$file_size = filesize(filename);获取文件内容的长度(因为读取文件第二个参数需要读多长,那就要知道文件有多大)

$file_size = filesize($filename);

$num = fwrite($fp, 'string');//返回值是6,表示写进去了6个字符
echo $num;
fclose($fp);

\color{rgba(3, 101, 100, .8)}{返回值:写入字符的长度}

image.png

\color{rgba(3, 101, 100, .8)}{写入的文件:}
\color{rgba(3, 101, 100, .8)}{张三 李四 王五 赵六被清除,剩下新写入的string}

image.png

\color{rgba(254, 67, 101, .8)}{用a写入: 追加}

$filename = '1.txt';
if(!file_exists($filename)){
    //file_exists — 检查文件或目录是否存在,在前面加 ! 是表示不存在
    //echo "文件{$filename}不存在";  不在这里写了,直接在die里输出就可以了
    die("文件{$filename}不存在");//die — 等同于 exit()  输出一个消息并退出
}
$fp = fopen($filename, 'a');//w删除文件的内容,并写入新的内容
//再打开一个文件的同时,先写关闭代码,省的中间写入代码太多,忘记写关闭文件代码

//$str = fread(handle, length);读取文件,返回值类型是字符串  第一个参数是资源,第二个参数是读多长
//$file_size = filesize(filename);获取文件内容的长度(因为读取文件第二个参数需要读多长,那就要知道文件有多大)

$file_size = filesize($filename);

// for($i=0; $i<10; $i++){ //将'string'写10次
//  $num = fwrite($fp, 'string');//返回值是6,表示写进去了6个字符
//  echo $num;
// }
// 
fwrite($fp, '你好');
fclose($fp);

\color{rgba(3, 101, 100, .8)}{之前写入的内容还在,在后面追加 新内容 }

image.png

\color{rgba(3, 101, 100, .8)}{此时每刷新一次就会写入一次 }
\color{rgba(3, 101, 100, .8)}{这里如果是w写入的话,string会被清掉,而且无论刷新多少次,都只有一个 你好 }

image.png

\color{rgba(254, 67, 101, .8)}{简易的文件操作:}
\color{rgba(254, 67, 101, .8)}{不需要打开和关闭文件}
\color{rgba(254, 67, 101, .8)}{读文件:}

$filename = '1.txt';
$arr = file($filename);//file — 把整个文件读入一个数组中
//如果没有这个文件,不会自动创建文件
print_r($arr);//按换行得到的一个数组
image.png

\color{rgba(254, 67, 101, .8)}{}

$filename = '1.txt';
// $arr = file($filename);//file — 把整个文件读入一个数组中,如果没有这个文件,不会自动创建文件
// print_r($arr);//按换行得到的一个数组

$str =file_get_contents($filename);//返回字符串,上面file是返回数组
echo $str;
image.png

===================================================

\color{rgba(254, 67, 101, .8)}{写文件:}

$filename = '1.txt';
echo file_put_contents($filename, '你好');
//如果没有文件,先自动创建文件,再写入
//他是以w方式写入的,会清除之前的内容后再写入
//返回值是写入成功的数量

\color{rgba(3, 101, 100, .8)}{返回值是写入成功的数量(成功写入多少个字符)}

image.png

\color{rgba(3, 101, 100, .8)}{被写入的文件:以w方式写入的,先删除之前的内容,再写入}

image.png

\color{rgba(254, 67, 101, .8)}{如果不清除,需要追加,就在后面给第三个参数:FILE\_APPEND}
\color{rgba(254, 67, 101, .8)}{这是a的写法,a就是append,追加}

$filename = '1.txt';
echo file_put_contents($filename, '你好', FILE_APPEND);
//不写FILE_APPEND会清除之前的内容后再写入新内容
//写了FILE_APPEND,只会追加新内容
image.png

\color{rgba(254, 67, 101, .8)}{删除文件:unlink}

$filename = '1.txt';
unlink($filename);

运行后,文件被删掉了


\color{rgba(254, 67, 101, .8)}{之前的办法都只能写入字符串,不能写入一个数组}

$student = ['name'=>'张三', 'sex'=>'男', 'age'=>20];
// $class = [
//  ['name'=>'张三', 'sex'=>'男', 'age'=>18];
//  ['name'=>'李四', 'sex'=>'男', 'age'=>19];
//  ['name'=>'李雷', 'sex'=>'男', 'age'=>20];
//  ['name'=>'LUCY', 'sex'=>'女', 'age'=>17];
// ]
// 

$filename = 'class.txt';
echo file_put_contents($filename, $student, FILE_APPEND);//将$student数组写入$filename中

\color{rgba(3, 101, 100, .8)}{返回值:}

image.png

\color{rgba(3, 101, 100, .8)}{文件中写入的结果:}
\color{rgba(3, 101, 100, .8)}{这个结果有问题,再遍历这个数组取值的话不好取}

image.png

\color{rgba(254, 67, 101, .8)}{把数组变成字符串叫做 数组的序列化}
\color{rgba(3, 101, 100, .8)}{json\_encode 返回字符串}

$student = ['name'=>'张三', 'sex'=>'男', 'age'=>20];

$student = json_encode($student);
echo $student;

\color{rgba(3, 101, 100, .8)}{返回值是一个字符串:}
\color{rgba(254, 67, 101, .8)}{(存的时候,就存这个字符串,每个学生信息占一行,取的时候好取)}

image.png

\color{rgba(3, 101, 100, .8)}{json\_encode();的作用就是把数组转换为json格式的字符串}
\color{rgba(3, 101, 100, .8)}{这是数组的序列化}

\color{rgba(3, 101, 100, .8)}{json\_decode();的作用就是把json格式的字符串转换为数组}
\color{rgba(3, 101, 100, .8)}{json\_decode();写true就是数组,不写就是返回对象}
\color{rgba(3, 101, 100, .8)}{这是数组的反序列化}

\color{rgba(3, 101, 100, .8)}{json\_decode:返回数组}

$student = ['name'=>'张三', 'sex'=>'男', 'age'=>20];
// $class = [
//  ['name'=>'张三', 'sex'=>'男', 'age'=>18];
//  ['name'=>'李四', 'sex'=>'男', 'age'=>19];
//  ['name'=>'李雷', 'sex'=>'男', 'age'=>20];
//  ['name'=>'LUCY', 'sex'=>'女', 'age'=>17];
// ]
// 

$student = json_encode($student);
$str = '{"name":"\u5f20\u4e09","sex":"\u7537","age":20}';
$student = json_decode($str, true);
print_r($student);//这个数组会返回一个对象类型,因为这个数组是一个关联数组,所以,$str后面还要跟第二个参数,true,保证他之前是什么类型,转换之后还是什么类型
image.png

\color{rgba(254, 67, 101, .8)}{将数组转为字符串保存的结果:}

$student = ['name'=>'张三', 'sex'=>'男', 'age'=>20];

$student = json_encode($student);//把数组转成json格式的字符串
$filename = 'class.txt';
echo file_put_contents($filename, $student."\n", FILE_APPEND);//$student."\n"  这个\n是换行

\color{rgba(3, 101, 100, .8)}{文件中写入的内容是这样的:}

image.png

\color{rgba(3, 101, 100, .8)}{上面这个保存的字符串读出来是这样:}

$student = ['name'=>'张三', 'sex'=>'男', 'age'=>20];


$student = json_encode($student);//把数组转成json格式的字符串
$filename = 'class.txt';
//echo file_put_contents($filename, $student."\n", FILE_APPEND);$student."\n"  这个\n是换行

$class = file($filename);
print_r($class);
image.png
$student = ['name'=>'张三', 'sex'=>'男', 'age'=>20];


/* $student = json_encode($student);//把数组转成json格式的字符串 */
$filename = 'class.txt';
$class = file($filename);
foreach($class as $k=>$v){
    $lass[$k] = json_decode($v, true);
    //将字符串反序列化(转为数组)后保存
    //此时$class已经是一个二维数组了
}
print_r($class);

\color{rgba(3, 101, 100, .8)}{返回值:}

image.png

\color{rgba(3, 101, 100, .8)}{源码:}

image.png

\color{rgba(254, 67, 101, .8)}{如果要将一个预先写好的数组显示在表格中:}

$student = ['name'=>'张三', 'sex'=>'男', 'age'=>20];

$filename = 'class.txt';

$class = file($filename);
foreach($class as $k=>$v){
    $class[$k] = json_decode($v, true);
}

?>
    
    
    
    
        
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title></title>
</head>
<body>
    <table width="800" border="1" align="center">
        
        <tr>
            <th>姓名</th>
            <th>性别</th>
            <th>年龄</th>
            <th>操作</th>
        </tr>
        
        <?php
            foreach($class as $v){
                echo "<tr align='center'><td>{$v['name']}</td><td>{$v['sex']}</td><td>{$v['age']}</td><td>修改|删除</td></tr>";
            }   
        ?>
        
    </table>
</body>
</html>

\color{rgba(3, 101, 100, .8)}{文件中的数组:}

image.png

\color{rgba(3, 101, 100, .8)}{显示的返回值:}

image.png

\color{rgba(254, 67, 101, .8)}{上面这个例子有一个问题,就是遍历文件之前要先判断是否有这个文件}

\color{rgba(254, 67, 101, .8)}{上面例子进阶:}
\color{rgba(254, 67, 101, .8)}{1.先判断文件是否存在;}
\color{rgba(254, 67, 101, .8)}{2.再建一个添加学生页面(录入学生信息的页面)}

\color{rgba(254, 67, 101, .8)}{例子:一个页面添加学生信息,一个页面显示学生信息}

\color{rgba(254, 67, 101, .8)}{此页面显示学生信息:}

$student = ['name'=>'张三', 'sex'=>'男', 'age'=>20];

/*$student = json_encode($student);//把数组转成json格式的字符串  */  
$filename = 'class.txt';

$class = [];
if(file_exists($filename)){
    //file_exists — 检查文件或目录是否存在
    //处理这个文件之前要先检查文件是否存在
    //有这个文件才执行,没有就不执行了
    
$class = file($filename);
    foreach($class as $k=>$v){
        $class[$k] = json_decode($v, true);
    }
}
?>
    
    
    
    
        
<!DOCTYPE html>
<html lang="zh">
<head>
    <title>学生列表</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title></title>
</head>
<body>
    <table width="800" border="1" align="center">
        <caption><a href="add.php">添加学生</a></caption>
        <tr>
            <th>姓名</th>
            <th>性别</th>
            <th>年龄</th>
            <th>操作</th>
        </tr>
        
        <?php
            foreach($class as $v){
                echo "<tr align='center'><td>{$v['name']}</td><td>{$v['sex']}</td><td>{$v['age']}</td><td>修改|删除</td></tr>";
            }   
        ?>
        
    </table>
</body>
</html>

\color{rgba(3, 101, 100, .8)}{成功添加了两个学生信息在class.txt中并显示在此页面}

image.png image.png

\color{rgba(254, 67, 101, .8)}{此页面添加学生信息:}

<?php
    if(!empty($_POST)){//如果下面的post不为空,就操作
        /* print_r($_POST);//此时接收到的数据是一个列表 */
        $student = $_POST;//将获取到的值赋给$student
        $student = json_encode($student);//将接收到的值(数组)转换成字符串
        $num = file_put_contents('class.txt', $student."\n", FILE_APPEND);//将转换好的字符串保存
        if($num > 0){//验证$num是否收到数据,大于0就成功,否则失败
            die("<script>alert('添加成功'); location.href='study.php';</script>");//成功就输出并且跳转到显示页面
        }else{
            die("<script>alert('添加失败');location.href='add.php';</script>");//失败也输出信息但是停在此页面
        }
    }
?>


<!DOCTYPE html>
<html lang="zh">
<head>
    <title>添加学生</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title></title>
</head>
<body>
    <h3>添加学生</h3>
    <form action="" method='post'>
        <p>姓名: <input type="text" name="name"></p>
        <p>性别: <input type="radio" name="sex" value="男" checked/>男 <input type="radio" name="sex" value="女" />女</p>
        <p>年龄: <input type="text" name="age"></p>
        <p><button>提交</button></p>
    </form>
</body>
</html>
image.png

\color{rgba(3, 101, 100, .8)}{}
绿:内容

\color{rgba(254, 67, 101, .8)}{}

红:标题`

相关文章

  • PHP -- 文件操作1

    $str = fread($fp, 10); 读取$str = fgets($fp, 512); 读取一行$s...

  • php操作Sphinx

    使用PHP API操作 Sphinx 1、基础操作 步骤1:复制sphinx\api目录中的接口文件sphinxa...

  • PHP 文件操作

    创建写入文件 就会在同级目录下创建一个roy.text,并且内容为Hello! 读取文件

  • php 文件操作

    文件读取内容 方式一: 方式二: 方式三: 判断文件是否存在 判断是否是文件 file_exists不仅可以判断文...

  • PHP文件操作

    和数据库操作一样,操作文件同样也分为打开文件,读取文件,写入文件和关闭文件四步。 一、打开关闭文件 1、fopen...

  • 6.PHP文件编程

    思考:在进行PHP开发的时候,有时候会需要对文件进行操作,例如文件夹管理和文件管理等,这些操作PHP有提供扩展吗?...

  • 文件系统

    PHP文件系统之读取文件内容 PHP具有丰富的文件操作函数,最简单的读取文件的函数为file_get_conten...

  • PHP学习笔记 - 进阶篇(7)

    文件操作 读取文件内容 PHP具有丰富的文件操作函数,最简单的读取文件的函数为file_get_contents,...

  • Learn PHP

    title: PHP学习笔记date: 2016-07-07 11:33:29tags: PHP php文件操作的...

  • 文件处理和上传

    PHP 文件处理和上传 如何判断文件和文件夹 文件的属性 文件的操作 这段我整体是查阅PHP的手册完成--大家参考...

网友评论

      本文标题:PHP -- 文件操作1

      本文链接:https://www.haomeiwen.com/subject/tyyvdctx.html