php最新学习-----文件的操作
一、文件:文件和目录
(1)判断文件的类型用:filetype()
filetype("文件路径+文件名") //判断文件的类型
例如:我这里查找的的上一级目录中的json文件,输出看下结果(这些文件都是我盘中有的,可以是随便的一个文件)
var_dump(filetype("../json")); //上一级目录中的json文件

(2)判断文件是不是目录用:is_dir()
is_dir("文件路径+文件名") //判断文件是不是目录
例如:我这里查找的的当前目录中的11.txt文件,判断文件是不是目录,输出看下结果
var_dump(is_dir("./11.txt")); //当前目录中的11.txt文件
:返回的false说明这个不是目录
(3)判断是不是文件用:is_file()
is_file("路径+文件名") //判断文件是不是文件
例如:判断下这个文件是文件不?看下输出效果
var_dump(is_file("./11.txt")); //当前目录中的11.txt文件
二、文件属性
(1)获取文件上次的访问时间用:fileatime()
fileatime("路径+文件名") //获取文件上次的访问时间
例如:我这里查找11.txt的文件,我先将文件的属性截图看下,后面的会用到这个属性框

查看这个文档的上一次访问时间:
echo date("Y-m-d H:i:s",fileatime("./11.txt")); //用时间戳可以看得清楚时间,查的是当前目录下的11.txt文件
查看下是不是属性框中,结果是一样的
(2)获取文件的修改时间用:filectime()
filectime("路径+文件名") //获取文件的创建时间
例如:查看11.txt文件的创建时间
echo date("Y-m-d H:i:s",filectime("./11.txt"));
查看属性框中的创建时间是不是一样呢?
(3)获取文件的修改时间用:filemtime()
filemtime("路径+文件名") //获取文件的修改时间
例如:查看11.txt文件的修改时间
echo date("Y-m-d H:i:s",filemtime("./11.txt"));
查看属性框中的修改时间是不是一样?
(4)获取文件的大小用:filesize()
filesize("路径+文件名") //获取文件的大小
例如:查看11.txt文件的大小
echo filesize("./11.txt");
是不是和属性框中的文件大小是不是一样?
(5)获取文件是否存在用:file_exists()
file_exists("路径+文件名") //获取文件是否存在
例如:查看12.txt文件是否存在吧
var_dump( file_exists("./12.txt"));
这个文件是不存在的,多以是false,存在的话就是true
三、文件路径
文件路径以下几种:
1 ./代表当前目录
2 ../代表上一级目录
3 /代表根目录
(3.1)网页里面的根:代表www目录
(3.2)php里面的根:代表磁盘目录
下面看各种方法的用处:
(1)获取当前服务器的根www
$_SERVER['DOCUMENT_ROOT'] //获取当前服务器的根www
直接输出看下

(2)获取路径中的文件名
basename("文件") //一个参数:就是文件的路径
例如:获取一个文件中的一个文件
echo basename("./touxiang/test.php"); //touxiang文件中的test文件
结果就是:文件名+后缀名
(3)获取去掉后缀的文件名
basename("文件",".后缀名") //有两个参数:第一个是文件的路径,第二个就是去掉后缀名是什么
例如:还是找一个文件中的一个文件
echo basename("./touxiang/test.php",".php");
结果就是:只有文件名
(4)获取路径中除去文件名的部分
dirname("文件") //一个参数,正常的文件路径就可以
例如:还是查找上面的那个文件
echo dirname("../touxiang/test.php");
结果就是没有文件名只剩下路径了
(5)获取文件信息,返回数组
pathinfo("文件名")
例如:还是touxiang文件中的test文件
var_dump(pathinfo("../touxiang/test.php"));

(6)将相对路径转换成绝对路径
realpath("文件")
例如,当前文件中的一个文件
echo realpath("./11.txt");

四、遍历目录
(1)返回目录下的所有文件 :glob()
var_dump(glob("./touxiang/*")); //文件,*代表所有

文件中的文件都有显示:

(2)循环遍历下这个文件夹
$attr = glob("./touxiang/*");
foreach($attr as $v)
{
echo $v."<br>";
}
输出下的结果
例题::显示文件夹中的文件数量(包括子文件夹中的文件)
找一下touxiang文件中的文件数量吧,一共是6个,两个文件,一个子文件,子文件中有3张图片,所以是六个文件

function ShuLiang($fname)
{
$attr = glob($fname."/*"); //路径中的所有
$n = count($attr); //文件的总数 foreach($attr as $v)
{
if(is_dir($v)) //判断是否是文件
{
$n = $n+ShuLiang($v); //是的话调用方法再继续加
} }
return $n;
}
echo ShuLiang("./touxiang");
输出的结果就是6
(3)目录资源
为了以后写方便,可以先定义一个文件目录
$fname = "./touxiang"; //将touxiang文件定义
打开目录资源:opendir()
$dir = opendir($fname);
有打开就会有关闭:closedir()
将打开的目录遍历,得到目录中的文件
while($url = readdir($dir)) //循环读取
{
echo $fname."/".$url."<br>"; //路径拼上
}
然后就是关闭目录资源
closedir($dir); //关闭目录资源
运行查看下结果
在结果中出现了“.”和“..” 一定要注意,这是代表下一层和上一层目录
例题::获取某一个目录下所有文件的大小
这里还是获取touxiang文件夹的大小吧
还是定义一个方法,然后是打开目录资源,相应的关闭目录资源,然后遍历目录找到文件,累计大小,肯定会有子目录,也要找到子目录的文件,结算子目录文件中的大小
function Fsize($fname)
{
$size = 0;
$dir = opendir($fname); //遍历目录,找到文件,累加大小
while($u = readdir($dir))
{
if($u=="." || $u=="..") //判断,一定要有,如果没判断有这个磁盘的内容都没有了
{
}
else
{
$zfname = $fname."/".$u;
if(is_file($zfname))
{
$size += filesize($zfname); //文件大小累计加
}
}
} //找到子目录,获取子目录下文件大小
rewinddir($dir);
while($u = readdir($dir))
{
if($u=="." || $u=="..")
{
}
else
{
$zfname = $fname."/".$u;
if(is_dir($zfname))
{
$size += Fsize($zfname); //调用方法继续加
}
}
} closedir($dir);
return $size;
} echo Fsize("./touxiang");
得到的结果是:
这个和文件的属性中的大小是一样的

(4)创建一个新的文件夹(现在的文件夹内的内容)

想要创建个新的文件夹
mkdir("./bb"); //创建文件夹
文件中这样就创建了个文件夹:
(5)有创建就有删除(把刚才创建的文件夹删除)
注意:只能删除空的文件夹
rmdir("./bb"); //删除文件夹(只能删除空的文件夹)
这样刚才创建的文件已经删除了:
(6)移动目录文件(我这里把名字也改成了aa)
rename("./touxiang1","../aa") //第一个参数是要移动的文件,第二个参数是移动到哪里,然后也可以改个名字
文件已经移出来了: 
五、文件整体操作
touch("./22.txt"); //创建文件
copy("./11.txt","../11.txt"); //复制文件
unlink("../11.txt"); //删除文件
echo file_get_contents("./11.txt"); //*获取本地文件内容
echo file_get_contents("http://www.baidu.com"); //还可以获取远程文件内容
readfile("11.txt"); //读取文件内容并输出
var_dump(file("./11.txt")); //读取文件内容,每行放在数组里面当做一个元素
六、文件内容操作
$f = fopen("./11.txt","r"); //打开文件并返回文件资源:两个参数:可以选择打开模式:r只读,r+读写入,w写入新内容,并且清空原来的内容,a追加新内容
fwrite($f,"hello world"); //写入内容
echo fgetc($f);
echo fgetc($f);
echo fgetc($f); //读取文件内容,一个字符一个字符的读
echo fgets($f);
echo fgets($f); //读取文件内容,每次读一行
echo fread($f,10); //读取文件内容,按照长度来读:两个参数,一个是文件,另一个是长度,可以控制读取
fclose($f); //关闭文件资源
例题:删除文件
function ShanChu($fname)
{
//遍历该文件夹,找到所有文件删除
$dir = opendir($fname);
while($n = readdir($dir))
{
if($n!="." && $n!="..") //这是必须有的,不然这个磁盘上的内容群都会被删除
{
$zname = $fname."/".$n;
if(is_file($zname))
{
unlink($zname); //删除文件
}
else
{
ShanChu($zname); //如果有子文件夹也要删除,这里调用这个方法
}
}
}
closedir($dir); //删除文件夹
rmdir($fname);
} ShanChu("../aa");
文件夹aa被删除了 
文件的操作,到此结束~~~
php最新学习-----文件的操作的更多相关文章
- day9 python学习 文件的操作 读 写 seek
文件的操作 1 文件的打开操作: 文件句柄 = open('文件路径', '模式') f=open('wangyakun','a+',encoding='utf-8') #文件名, 如果是绝对路径 ...
- python学习----文件的操作(2)
1.文件指针的操作 f=open("yesterday","r",encoding="utf-8") #文件句柄 #文件内指针的操作 pri ...
- PHP学习笔记--文件目录操作(文件上传实例)
文件操作是每个语言必须有的,不仅仅局限于PHP,这里我们就仅用PHP进行讲解 php的文件高级操作和文件上传实例我放在文章的最后部分.--以后我还会给大家写一个PHP类似于网盘操作的例子 注意:阅读此 ...
- 树莓派学习笔记——使用文件IO操作GPIO SysFs方式
0 前言 本文描写叙述假设通过文件IO sysfs方式控制树莓派 GPIO端口.通过sysfs方式控制GPIO,先訪问/sys/class/gpio文件夹,向export文件写入GPIO编号, ...
- java 学习笔记之 流、文件的操作
ava 学习笔记之 流.文件的操作 对于一些基础的知识,这里不再过多的解释, 简单的文件查询过滤操作 package com.wfu.ch08; import java.io.File; import ...
- python学习8 文件的操作
本文拷贝了on testing 的<python之文件操作:文件的读写>,只做学习之用 python的文件读写通过 一.用open函数 二.对文件读写操作 三.读取文件位置定位 1. op ...
- linux学习笔记一----------文件相关操作
一.目录结构 二.文件管理操作命令(有关文件夹操作,使用Tab键自动补全文件名(如果多个默认第一个)) 1.ls 查看目录信息:ls -l 查看目录详细信息(等价于ll 某些系统不支持) 2.pwd ...
- linux —— 学习笔记(文件、文件夹操作)
目录:1.常用的文件文件夹操作 2.文件属性的设置 1.常用的文件文件夹操作 mkdir 创建文件夹 -p 如果指定 a/b/c 时 a .b 不存在,一起创建出来 cp 复制文件或文件 ...
- Day3 Python基础学习——文件操作、函数
一.文件操作 1.对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过文件句柄对文件进行操作 关闭文件 #打开文件,读写文件,关闭文件 http://www.cnblogs.com/linha ...
随机推荐
- 安装SQL Server 2005 - 初学者系列 - 学习者系列文章
初学者阶段,建议从数据库为基础入手进行学习. 下面介绍微软的SQL Server 2005数据库的安装. 首先,从下列地址获取SQL Server 2005的安装程序. ed2k://|file|cs ...
- 【SSH三个框架】Hibernate第八部分基础:经营-many关系
在Hibernate在-many关系.它通常不使用.由于当数据库查询复杂度太高时. 我们在这里做的是学生和教师,学生可以有多个老师,教师可以有多个学生. watermark/2/text/aHR0cD ...
- vs 中一些快捷键
本文用于记录一些vs中快捷键,以便提高编程效率. 首先小坦克的博客介绍的十几个快捷键挺不错的,还有动画演示.可以跳过去看看. 自己也记录一些自己想用的吧: 1. ctr + W + E 出现error ...
- 日期,为下拉列表添加日期,优化,目前本人博客上最优的解决方案,之前学习的通过判断得到平年闰年,而这个是让系统自动去判断,无须if判断,代码示例
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...
- Coded UI Test对Webpage进行自动化测试
如何使用Coded UI Test对Webpage进行自动化测试 在Visual Studio中,Coded UI Test已经不是什么新特性了,较早版本的Visual Studio中就已经有这个 ...
- Confluence, JIRA, Fisheye
[tools]迁移Confluence, JIRA, Fisheye [背景] 原先的Confluence, JIRA, Fisheye都部署在一台服务器(192.168.200.203)上,导致 ...
- Ajax+Ashx实现以及封装成控件的实现
asp.net 后台多线程异步处理时的 进度条实现一(Ajax+Ashx实现以及封装成控件的实现) 工作好长时间了,这期间许多功能也写成了不少的控件来使用,但是,都只是为了代码的结构清析一些而已.而这 ...
- AngularJS的工作原理1
AngularJS的工作原理 个人觉得,要很好的理解AngularJS的运行机制,才能尽可能避免掉到坑里面去.在这篇文章中,我将根据网上的资料和自己的理解对AngularJS的在启动后,每一步都做了些 ...
- DotNetOpenAuth搭建OAuth2.0
使用DotNetOpenAuth搭建OAuth2.0授权框架 标题还是一如既往的难取. 我认为对于一个普遍问题,必有对应的一个简洁优美的解决方案.当然这也许只是我的一厢情愿,因为根据宇宙法则,所有事物 ...
- 关于GNU软件的版本号命名规则
这里所说的版本号命名并非指“正式版”.“测试版”这种方式,而是在讨论版本编号的问题,例如Linux内核3.0以后的版本命名规则是3.A.B,A是内核的版本,B是安全补丁.那么对于一般的软件的版本号命名 ...