国强极客
有问题请加微信:guoqiang7585
国强极客

2、php操作目录操作文件 创建 打开 更改 删除 读取

2、php操作目录操作文件 创建 打开 更改 删除 读取

PHP操作目录

1、创建新目录mkdir()

描述:尝试新建一个由 pathname 指定的目录。
语法:

bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false ]] )

参数:

$pathname:指定目录的路径;
$mode:默认的 mode 是 0777,意味着最大可能的访问权。$mode在windows下被忽略。 注意$mode的值为八进制。
$recursive:如果指定的路径的上级目录不存在,则也会递归创建。
返回值:成功时返回TRUE,失败时返回FALSE。

mode 参数包含三个八进制数按顺序分别指定了所有者、所有者所在的组以及所有人的访问限制。每一部分都可以通过加入所需的权限来计算出所要的权限。数字 1 表示使文件可执行,数字 2 表示使文件可写,数字 4 表示使文件可读。加入这些数字来制定所需要的权限。

//创建一个新的目录
$dirname = "./public/a/b/c/d";
//第1个参数:目录名称
//第2个参数:目录访问权限,0777最大权限
//第3个参数:如果上层目录不存在,则会递归创建
mkdir($dirname,0777,true);

2、判断是否是一个目录is_dir()

描述:判断给定文件名是否是一个目录。
语法:bool is_dir ( string $filename )
返回值:如果文件名存在,并且是个目录,返回 TRUE,否则返回FALSE。

//判断当前文件,是文件,还是目录
$dirname = "./public";
if(is_dir($dirname))
{
    echo "{$dirname}是目录!";
}else
{
    echo "{$dirname}是一个文件!";
}

3、判断目录或文件是否存在file_exists()

语法:

bool file_exists ( string $filename )

提示:可以判断文件,也可以判断目录,是否存在。
返回:如果由 filename 指定的文件或目录存在则返回 TRUE,否则返回 FALSE。

//判断文件是否存在
$dirname = "./public";
if(file_exists($dirname))
{
    echo "{$dirname}文件存在!<br>";
    //如果文件存在,再判断它是目录还是普通文件
    if(is_dir($dirname))
    {
        echo "{$dirname}是一个目录!";
    }else
    {
        echo "{$dirname}不是目录!";
    }

}else
{
    echo "{$dirname}文件不存在!";
}

先判断文件是不是存在,在判断是文件还是目录

4、删除目录rmdir()

语法:

bool rmdir ( string $dirname )

参数:$dirname目录路径。 rm=remove
返回值:成功时返回 TRUE, 或者在失败时返回 FALSE。
提示:尝试删除 dirname 所指定的目录。 该目录必须是空的,且要有相应的权限。

//判断文件是否存在
$dirname = "./public";
if(file_exists($dirname))
{
    //判断是不是目录
    if(is_dir($dirname))
    {
        //删除目录:该目录必须是空的
        rmdir($dirname);
    }
}

5、更改目录的访问权限chmod()

描述:改变文件的访问权限
语法:

bool chmod ( string $filename , int $mode )

参数:

filename,指定文件的路径;
mode 参数包含三个八进制数按顺序分别指定了所有者、所有者所在的组以及所有人的访问限制。每一部分都可以通过加入所需的权限来计算出所要的权限。数字 1 表示使文件可执行,数字 2 表示使文件可写,数字 4 表示使文件可读。加入这些数字来制定所需要的权限。
提示:在window下文件的只读权限是 0444。文件夹只读权限0555。0754所有者读写执行,组可执行可读,其他人读
注意:此函数不能作用于远程文件。

$dirname = "./itcast";
//windows会忽略权限值,而linux下才有效果
chmod($dirname,0754);
//获取文件的权限值,返回十进制
$int = fileperms($dirname);
//十进制转成8进制
$int = decoct($int);
//截取字符串:40777转成0777
echo substr($int,-4);

6、取得目录或文件访问权限fileperms()

语法:

//获取文件的权限值,返回十进制
int fileperms ( string $filename )
//十进制转成8进制
$int = decoct($int);
//截取字符串:40777转成0777
substr($int,-4);

substr 函数介绍php 常用函数

返回值:以十进制数字返回文件的访问权限。

7、重命名或移动文件或目录rename()

描述:重命名或移动一个文件或目录。如果文件不存在同一目录下,就是移动。
语法:

bool rename ( string $oldname , string $newname )

返回值:成功时返回 TRUE, 或者在失败时返回 FALSE。

//更改目录或文件名称,确定原目录必须存在
//注意:如果原目录和新目录都位于同一个父目录下,则认为是改名;
//注意:如果原目录和新目录位于不同父目录下,则认为是移动。
$oldname = "./public";
$newname = "./itcast/public";
rename($oldname,$newname);

8、打开目录opendir()

描述:打开目录句柄,可用于之后的 closedir(),readdir() 和 rewinddir() 调用中。
语法:

resource opendir ( string $path )

返回值:如果成功则返回目录句柄的 resource,失败则返回 FALSE。

10、读取目录中条目readdir()

描述:从目录句柄中读取条目 ;
语法:

string readdir ([ resource $dir_handle ] )

说明:返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。
返回:成功则返回文件名 或者在失败时返回 FALSE
所以可以使用while循环

//实例:读取目录中的条目
$dirname = "./itcast";
//打开目录,返回目录句柄资源
$handle = opendir($dirname);
//从目录句柄资源中取回所有条目(文件或目录)
//循环结束标志:当资源中所有条目全部读取完毕,返回false
while($line = readdir($handle))
{
    //echo $line;
    echo iconv('gbk','utf-8',$line)."<br>";
}
//关闭目录句柄:节省服务器资源
closedir($handle);

iconv — 字符串按要求的字符编码来转换 php 常用函数

11、显示中文目录或文件iconv()

描述:字符串按要求的字符编码来转换
语法:

string iconv ( string $in_charset , string $out_charset , string $str )

参数:

$in_charset,输入的字符集;
$out_charset,输出的字符集;
$str,要转换的字符串;
返回:返回转换后的字符串, 或者在失败时返回 FALSE。

12、关闭目录句柄closedir()

描述:关闭由 dir_handle 指定的目录流。流必须之前被 opendir() 所打开。
语法:

void closedir ( [resource $dir_handle] )

提示:如果省略$dir_handle,则默认为最后由opendir()打开的目录句柄。

PHP操作文件

1、打开文件fopen()

描述:打开文件或者 URL
语法:

resource fopen ( string $filename , string $mode )

参数:filename,指定要打开的目标文件或URL;mode,指定文件的打开方式。
提示:为移植性考虑,在用 fopen()打开文件时总是使用 ‘b’ 标记。binary
返回值:成功时返回文件指针资源,如果打开失败,本函数返回 FALSE。

以写入方式打开,它自动创建文件

2、打开文件的方式

常用的就是 r w a

3、关闭文件fclose()

描述:关闭一个已打开的文件指针
语法:

bool fclose ( resource $handle )

参数:$handle必须是由fopen()打开的文件指针。

4、读取指定大小文件内容fread()

描述:读取文件(可安全用于二进制文件) 音频,图片,视频
语法:

string fread ( resource $handle , int $length )

参数:(handle是由fopen()创建的handle;)length最多读取的字节数
提示:在区分二进制文件和文本文件的系统上(如 Windows)打开文件时,fopen() 函数的 mode 参数要加上 ‘b’。
返回值:返回所读取的字符串, 或者在失败时返回 FALSE。

//实例:读取一张图片二进制数据
$filename = "./images/img01.jpg";
//以只读方式打开
$handle = fopen($filename,'rb');
//读取全部数据:filesize()函数获取文件大小,以字节为单位
$str = fread($handle,filesize($filename));
//告诉浏览器:以图片数据显示
header("Content-Type:image/png");
echo $str;
//关闭文件
fclose($handle);

header()函数介绍 php 常用函数

5、读取一行内容fgets()

描述:从文件指针中读取一行
语法:

string fgets ( resource $handle [, int $length ] )

参数:

\(handle:文件指针必须是有效的
\)length:从 handle指向的文件中读取一行并返回长度最多为 length – 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length – 1 字节后停止(看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节
返回值:从指针 handle 指向的文件中读取了 length – 1 字节后返回字符串。 如果文件指针中没有更多的数据了则返回 FALSE。

//实例:读取记事本的学生信息数据
$filename = "./images/student.txt";
//以只读方式打开
$handle = fopen($filename,'rb');
//循环读取所行数据:碰到换行符、文件结束符都会终止读取
while($str = fgets($handle))
{
    echo iconv('gbk','utf-8',$str)."<br>";
}

6、读取文件内容到数组中file()

描述:把整个文件读入一个数组中
语法:

array file ( string $filename [, int $flags = 0 ] )

参数:

\(filename,文件的路径;
\)flags,附加选项;
FILE_USE_INCLUDE_PATH(1):在include_path 中查找文件;
FILE_IGNORE_NEW_LINES(2):在数组的每个元素末尾不添加换行符
FILE_SKIP_EMPTY_LINES(4):跳过空行
注意:不需要打开文件和关闭文件。

//实例:读取远程网页数据
$filename = "http://news.sina.com.cn";
//不用打开文件和关闭文件
$arr = file($filename,2|4);//不添加换行符|跳过空行
//打开数组
print_r($arr);

7、file_get_contents()读取文件内容到字符串中

描述:将整个文件读入一个字符串 ,不用打开文件,也不用关闭文件
语法:

string file_get_contents ( string $filename )

返回:返回读取的数据,或在失败时返回false。

//实例:读取远程网页数据
$filename = "http://news.sina.com.cn";
//不用打开文件和关闭文件
$str = file_get_contents($filename);
//打开数组
print_r($str);

8、实例:读取记事本中的内容,并用表格展示出来

//实例:读取记事本学生信息,并用表格显示出来
$filename = "./images/student.txt";
//将记事本数据读入到数组中
$arr = file($filename,2|4);
//构建输出的表格字符串
$str = "<table border='1'>";
foreach($arr as $value)
{
    //将取到的每个数组元素的值,分割成一维数组
    $arr2 = explode(',',$value);
    $str .= "<tr>";
    foreach($arr2 as $value2)
    {
        $str .= "<td>".iconv('gbk','utf-8',$value2)."</td>";
    }
    $str .= "</tr>";
}
$str .= "</table>";

//输出结果字符集
echo $str;

9、写入文件fwrite

描述:写入文件(可安全用于二进制文件)
语法:

int fwrite ( resource $handle , string $string )

返回:返回写入的字符数,出现错误时则返回 FALSE 。

//实例:写入文件内容
$filename = "./images/student.txt";
//以追加方式打开文件
$handle = fopen($filename,'ab');
//写入一行数据:windows下换行符为'\r\n',linux换行符为'\n'
$str = "10040,李五,男,28,高中,4000,500,山西省\r\n";
fwrite($handle,iconv('utf-8','gbk',$str));
fclose($handle);

10、将一个字符串写入文件file_put_contents

描述:和依次调用 fopen(),fwrite()以及 fclose() 功能一样。
语法:

int file_put_contents ( string $filename , mixed $data [, int $flags = 0] )

参数:

\(filename要被写入数据的文件名。
\)data要写入的数据。类型可以是 string,array(一维数组)。
$flags附加选项。
FILE_USE_INCLUDE_PATH(1) 在 include 目录里搜索 filename
FILE_APPEND(8)如果文件 filename已经存在,追加数据而不是覆盖
LOCK_EX(2)在写入时获得一个独占锁。
提示:如果文件不存在,则会自动创建。如果文件过大,不能一次性处理。
返回:该函数将返回写入到文件内数据的字节数,失败时返回FALSE

//实例:将新浪新闻主页另存到本地
$filename = "http://news.sina.com.cn";
//读取网页内容到字符串中
$str = file_get_contents($filename);
//另存到本地文件
file_put_contents("./images/sina.html", $str);

11、拷贝文件

描述:将文件从 source 拷贝到 dest。
语法:

bool copy ( string $source , string $dest )

提示:如果目标文件存在,则会覆盖。

12、删除文件

语法:

bool unlink ( string $filename ) 

返回:成功时返回 TRUE, 或者在失败时返回 FALSE。
提示:可以删除虚拟空间之外的文件,但必须使用相对路径(../),但必须有权限。
注意:删除的文件不会进入回收站。

13、其它的文件操作函数

filesize(),可以获取文件大小,单位为字节。
is_writable(),判断文件是否可写。
is_readable(),判断文件是否可读。
feof(),判断文件指针是否到达文件结尾。
filectime(),获取创建文件的时间。
fileatime(),获取文件最新访问时间。
filemtime(),获取文件最后修改时间。

综合实例:递归删除phpMyAdmin目录

//实例:递归删除phpMyAdmin目录
function del_all_files($dir) {
    //打开目录
    $handle = opendir($dir);
    //循环读取所有条目
    while($line = readdir($handle)) {
        //如果是'.'或'..',则跳过
        if($line=='.' || $line=='..')
        {
            continue;
        }
        //判断是文件,还是目录
        if(is_dir($dir."/".$line))
        {
            //递归调用
            del_all_files($dir."/".$line);
        }else{
            //如果是文件,直接删除
            unlink($dir."/".$line);
        }
    }
    //关闭目录
    closedir($handle);
    //删除目录
    rmdir($dir);
}
//调用函数
del_all_files("./phpMyAdmin");
赞赏
对内容有疑问,请加我微信:guoqiang7585
# #
首页      全栈教程      php高级      2、php操作目录操作文件 创建 打开 更改 删除 读取

国强极客

文章作者

博客站长,有问题请加微信【guoqiang7585】。

国强极客

2、php操作目录操作文件 创建 打开 更改 删除 读取
PHP操作目录 1、创建新目录mkdir() 描述:尝试新建一个由 pathname 指定的目录。 语法: bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false ]] ) 参数: $…
扫描二维码继续阅读
2019-07-31