php目录操作

目录操作

 

创建目录

Mkdir(目录地址,权限,是否递归创建=false);

 

 

删除目录

Rmdir(目录地址)

 

仅仅可以删除空目录。(不支持递归删除)

 

移动改名)

Rename(地址,新地址)

 

 

该函数也支持操作文件

 

 

获取目录内容(文件)

打开目录 目录句柄 = opendir(目录地址)

目录句柄:php程序与目录间的一个联系

 

依次读取目录内文件 文件名 = readdir(目录句柄);

依次读取一个文件(子目录),同时向下移动句柄指针。如果读取不到返回false

目录内存在两个逻辑子目录 ., .. 分别表示当前目录和上级目录!

 

通过配合 循环结构 完成目录内所有文件的读取:

 

处理 0 文件名

 

 

关闭目录 closedir()

 

 

 

递归获取目录内容

打开某个目录

依次读取目录内文件

如果某个文件为目录

递归对该目录采用打开,读取,判断这个递归草

 

递归点 如果子文件为目录,则递归

出口 如果目录中不存在子目录,则不需要继续递归!

 

 

 

树状展示

使用特定数量的缩进达到树状目的!

核心问题,计算需要缩进的数量!

缩进级别,与递归调用深度保持一致。每当执行递归操作找到的文件的缩进级别+1;

语法实现:

增加一个参数,表示当前函数调用的深度级别,每当递归+1;

 

 

嵌套

 

使用数组的嵌套,表示层级关系!

例如

 

 

实现

 

 

 

递归删除

Unlink(文件地址)删除文件。

 

 

 

 

目录文件名编码问题:

展示时,将操作系统编码转换为响应数据编码。

Windows gbk,项目utf-8

 

 

代码的地址中存在中文:需要转换为系统编码,才能被文件系统识别:

 

 

由于php基于Linux系统,所以php的文件操作包括文件目录以及文件两部分的操作,只能操作服务器的文件

文件操作

1.只能操作服务器的文件

2.文件包含目录和文件

 

判断文件类型

var_dump(filetype("../0529"));     //返回文件的类型:目录dir 文件file,

var_dump(is_dir("../11.php"));     //判断路径是不是目录,返回布尔类型

var_dump(is_file("../11.php"));     //判断路径是不是文件,返回布尔类型

 

文件属性

echo date("Y-m-d H:i:s",fileatime("../11.php")); //上次访问时间  返回一个时间戳,使用data格式化

echo date("Y-m-d H:i:s",filectime("../11.php")); //创建时间

echo date("Y-m-d H:i:s",filemtime("../11.php")); //修改时间

echo filesize("../11.php");                                     //文件大小,字节为单位

var_dump(file_exists("../12.php"));                     //判断文件是否存在

 

文件路径

当前路径:./  上级目录:../  下级目录:目录/  根路径:/

如果是php里面的根(/)路径代表:磁盘的根

如果是在网页里面的根(/)路径代表:服务器的根(www目录)

echo $_SERVER['DOCUMENT_ROOT'];     //取服务器的根路径

echo basename("../11.php");                     //从路径中获取带后缀的文件名

echo basename("../11.php",".php");         //从路径中获取不带后缀的文件名

echo dirname("../0529/aa.php");             //取径中除去文件名的目录

var_dump(pathinfo("../0529/aa.php"));     //返回目录信息,格式为数组

echo realpath("../0529/aa.php");             //将相对路径转化为绝对路

 

操作目录

var_dump(glob("../tp/*.php"));     //获取目录下所有的文件*  某个后缀的*.php

通过遍历    glob    输出子文件

$attr = glob("../tp/*");

for($i=0;$i<count($attr);$i++){

    echo $attr[$i]."<br>";

}

 

使用目录资源

$dir = opendir("");打开资源目录

closedir($dir) ;关闭资源目录

readdir($dir);读取目录下的文件,执行一次读一个

rewinddir($dir); 指针返回最初

通过目录资源遍历

echo readdir($dir); //读取目录下的文件,执行一次读一个

$dir = opendir("../tp"); //打开目录资源

while($wj = readdir($dir)){

    echo $wj."<br>";

}

closedir($dir); //关闭目录资源

rewinddir($dir);//将指针重置

注意:

使用readdir()读取的第一个和第二个内容

第一个是. 代表当前目录

第二个是.. 代表上级目录

在使用目录资源遍历文件夹的时候要注意将前两个排除

 

 

目录操作

1.创建目录(文件夹)

mkdir("./test");

2.删除目录(文件夹)只能删除空的文件夹

rmdir("./test");

3.移动目录(文件夹)

rename("./test","../test11"); 

 

 

文件操作

touch("./test.txt");//创建文件

copy("./test.txt","../test.txt"); //复制文件

unlink("./test.docx"); //删除文件

(file_exists(

 

echo file_get_contents("./test.txt"); //获取文件内容:txt 页面

echo file_get_contents("http://www.baidu.com"); //远程获取内容

file_put_contents("./test.txt","hello"); //向文件写入内容

readfile("./test.txt"); //获取文件内容并且直接输出

var_dump(file("./test.txt")); //读取文件内容,返回数组,数组的每个元素对应的是一行

 

 

对文件内容进行操作

1.打开文件资源

$fp = fopen("./test.txt","a");

 

操作文件

echo fgetc($fp); //每次读一个字符

while(!feof($fp)) //判断文件是否读到末尾

{

    echo fgetc($fp);

}

echo fgets($fp); //每次读一行

echo fgets($fp);

 

echo fread($fp,10); //读取特定长度

$str = "ni hao dhakhdak \r\n akdhka";

$str = iconv("utf-8","gb2312",$str);

 

fwrite($fp,$str);

 

2.关闭文件资源

fclose($fp);

 

文件操作

写入字节数 = File_put_contents(文件地址, 内容)

写,文件不存在,自动创建。

默认为替换写:

 

支持使用追加写:

第三个参数使用FILE_APPEND常量表示:

 

File_get_contents(文件地址)

 

操作的文件过大时?

不能一次性操作全部文件内容。上面的函数不适用!

使用下面的函数完成处理

Fopen();打开文件句柄(PHP与文件间数据通道)

参数1:文件地址

参数2:打开方式模式)打开文件后希望完成那种操作,可以在模式位置进行限制。

PHP提供了如下一些的打开模式:

Rread)读模式

Wwrite替换写模式,将文件内容清零自动创建不存在的文件。

Aappend)追加写模式

X 替换写不会自动创建不存在的文件。(只能打开已经存在文件

+扩展,扩展了操作。

R+ 读写模式将文件指针放在文件开头。

W+ 读替换写模式,将文件内容清零,将文件指针放在文件开头自动创建不存在的文件

A+ 读追加写模式写操作永远在文件末尾,读操作受限于文件指针。

X+ 读替换写模式文件内容清零,将文件指针放在文件开头,不会自动创建不存在的文件。(只能打开已经存在文件

 

 

都可以执行读写时,差异在于,打开文件时,初始化的工作不同,针对初始化的文件指针位置文件内容。

 

Fread(文件句柄, 长度);读取,读取指定长度的字符串内容(单位字节)

 

 

Tip长度是有个最大值。为8192个字节。

Fgets(文件句柄,长度);读取,读取指定长度的字符串

长度,指的是会读取长度-1个字节。

 

除了长度外,行末也是该函数的终止读操作条件。取决于满足那个条件。

 

因此也称读行函数。最常用。fgetS($handle, 1024)

 

fgetC(文件句柄);读取,一次读取一个字节的数据

 

读取指针位置字符,操作时会移动指针

 

fwrite(文件句柄,写入内容);写,在指定位置写入内容,通常由文件指针指示如果是a模式,不论指针在哪里,只能在末尾写。

 

 

如果w

 

fclose();

关闭句柄

 

 

 

Ftell()

获取指针位置

Fseek()

设置指针位置

 

 

R+:

读写都受指针影响写替换掉原有字节写。

W+:

清空内容

A+/a:

指针位置具有不确定因素。

A+,受指针影响,写就是追加。

 

 

Filemtime(文件地址)

文件的最后修改时间。

Filesize(文件地址)

 

统计目录大小。

转载于:https://www.cnblogs.com/hjc1234/p/9752560.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值