php中文件包含两种:文件,文件夹。文件夹又称目录

新建一个文件aa.txt和一个文件夹text,text文件夹下又包含bb.txt

一、判断文件类型
filetype("./aa.txt");  //取文件类型 : 返回file 文件
filetype("./text");    //取文件类型 : 返回dir 目录
is_dir("./text");      //判断是否是目录 : 返回true
is_dir("./aa.txt");   // 判断是否是目录 : 返回false
is_file("./aa.txt");   //判断是否是文件 :返回true

二、文件属性
echo date("Y-m-d H:i:s",fileatime("./aa.txt"));      //文件上次访问时间 :2016-05-24 09:05:01
echo date("Y-m-d H:i:s",filectime("./aa.txt"));      //文件创建时间 :2016-05-24 09:05:01
echo date("Y-m-d H:i:s",filemtime("./aa.txt"));     //文件修改时间 :2016-05-24 11:05:27
echo filesize("./aa.txt");                                      //文件大小  : 返回2
var_dump(file_exists("aa.txt"));                          //文件是否存在 :  返回boolean true

三、文件路径:
1. 当前目录:  ./  或者 不写
2. 上级目录:   ../
3. 下级目录: 文件夹名/
4. 根目录:  /
     根目录/有两层意思:如果/是在php程序里面的话代表:硬盘根目录,  如果/是在网页里的话代表:服务器的根目录(www)。
     做文件上传(头像,产品图片),保存在数据的路径一定要写绝对路径

echo $_SERVER['DOCUMENT_ROOT'];    //取服务器(www)根路径 : 返回E:/PHP/wampserver/wamp/www/

echo basename("./aa.txt");                     //路径中获取文件名 :  返回aa.txt

echo basename("./aa.txt", ".txt");          //路径中获取文件名(去掉后缀) :  返回aa
echo dirname("./text/bb.txt");                   //路径中目录名  : 返回:./text
var_dump(pathinfo("./aa.txt"));                //返回文件信息 : 返回数组

例子:
  显示结果:array (size=4)
  'dirname' => string '.' (length=1)
  'basename' => string 'aa.txt' (length=6)
  'extension' => string 'txt' (length=3)
  'filename' => string 'aa' (length=2)

var_dump(pathinfo("./text/bb.txt"));//返回文件信息 : 返回数组
  显示结果:array (size=4)
  'dirname' => string './text' (length=6)
  'basename' => string 'bb.txt' (length=6)
  'extension' => string 'txt' (length=3)
  'filename' => string 'bb' (length=2)

echo realpath("./text/bb.txt");              // 返回规范化的绝对路径.把相对路径转换为绝对路径  E:\PHP\wampserver\wamp\www\0524\text\bb.txt

echo realpath("./aa.txt");                    //   E:\PHP\wampserver\wamp\www\0524\aa.txt

四、目录操作:

1.遍历目录:第一种方法
var_dump(glob("./ueditor/utf8-php/*"));       //返回目录下所有的文件
var_dump(glob("./ueditor/utf8-php/*.js"));    //可以根据后缀筛选

例子:

var_dump(glob("../0503lianxi/*.php"));         //返回该目录下所有.php文件数组.*代表所有,可以根据后缀筛选
  显示结果: array (size=6)
    0 => string '../0503lianxi/Add1.php' (length=22)
    1 => string '../0503lianxi/AddChu.php' (length=24)
    2 => string '../0503lianxi/Delete1.php' (length=25)
    3 => string '../0503lianxi/Update1.php' (length=25)
    4 => string '../0503lianxi/UpdateChu.php' (length=27)
    5 => string '../0503lianxi/Zhu1.php' (length=22)

   例题1 :获取文件夹下所有文件个数

echo ShuLiang("../0503lianxi");
function ShuLiang($filename)
{
if(is_dir($filename))//判断是不是文件夹
{
$attr=glob($filename."/*");//是文件夹则遍历目录
$sl=0;
foreach($attr as $v)
{
if(is_dir($v))
{
$sl=$sl+ShuLiang($v);
}
else
{
$sl++;
}
}
return $sl;
}
else if(is_file($filename))
{
return 1;
}
else
{
return 0;
}
}

遍历目录:第二种方式
$dir = opendir("../0503lianxi");     //打开目录资源

echo readdir($dir);                    //返回目录的一个文件,读一次指针向下走,注意前两个

echo readdir($dir)."<br>";     //返回.
echo readdir($dir)."<br>";     //返回..
echo readdir($dir)."<br>";     //返回Add1.php
echo readdir($dir)."<br>";     //返回AddChu.php

平时用这种方法去取目录时要注意去掉前两个 . 和 ..

  while($v = readdir($dir))
  {
    if($v=="." || $v=="..")
    {

    }
    else
    {
      echo $v."<br>";
    }
  }

 若想再重新输出一次:

echo rewinddir($dir);                 //指针返回最初
echo readdir($dir)."<br>";     //返回.
echo readdir($dir)."<br>";     //返回..

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

 作业:写方法计算文件夹大小:

echo dir_size("../0513lianxi");
function dir_size($dir)
{
$dh = opendir($dir); //打开目录,返回一个目录流
$size = 0; //初始大小为0
while(false !== ($file = @readdir($dh)))
{ //循环读取目录下的文件
if($file!='.' and $file!='..')
{
$path = $dir.'/'.$file; //设置目录,用于含有子目录的情况
if(is_dir($path))
{
$size += $this->dir_size($path); //递归调用,计算目录大小
}
elseif(is_file($path))
{
$size += filesize($path); //计算文件大小
}
}
}
closedir($dh); //关闭目录流
return $size; //返回大小
}

  

运行结果:返回5631(字节)

2.创建目录

mkdir("./cc.php");

3.删除目录

 rmdir("aa");//删除目录,目录必须为空才可以删除

4.重命名或移动
rename("老路径","新路径");

五、文件整体操作:

touch("./ss.php");    //创建文件
copy("源","目标");    //复制文件
unlink("./aa.txt");   //删除文件
echo file_get_contents("./text/bb.txt");                   //读取文件内容(本地)
echo file_get_contents("http://www.baidu.com");  //读取远程内容(远程)

file_put_contents("aa.txt",file_get_contents("http://www.baidu.com"));      //写入文件内容(覆盖)
readfile("aa.txt");  //读取文件并输出

$attr = file("aa.txt");   //将文件中每行数据放到数组
var_dump($attr);

六、文件内容操作:
打开文件资源:
$fp = fopen("文件名","模式 r w");
r只读;r+读写;w写清空;w+读写;a写入文件末尾;a+读写;x创建并以写入打开;x+创建并以读写打开;加一个b代表可操作二进制文件(建议加)

'r' 只读方式打开,将文件指针指向文件头。
'r+' 读写方式打开,将文件指针指向文件头。
'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'x' 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE ,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。
'x+' 创建并以读写方式打开,其他的行为和 'x' 一样。 

$fp = fopen("./aa.txt", "r+");

fwrite($fp,"123456");    //写入内容
echo fgetc($fp);            //获取文件内容(一个字符一个字符读)
echo fgetc($fp);
echo fgetc($fp);
echo fgetc($fp);
echo fgetc($fp);
fgets($fp);                    //一次读一行
fread($fp,10);            //读多长
feof($fp);                     //如果文件出错或到末尾返回true

php 之 文件操作(0524)的更多相关文章

  1. 【.NET深呼吸】Zip文件操作(1):创建和读取zip文档

    .net的IO操作支持对zip文件的创建.读写和更新.使用起来也比较简单,.net的一向作风,东西都准备好了,至于如何使用,请看着办. 要对zip文件进行操作,主要用到以下三个类: 1.ZipFile ...

  2. 野路子出身PowerShell 文件操作实用功能

    本文出处:http://www.cnblogs.com/wy123/p/6129498.html 因工作需要,处理一批文件,本想写C#来处理的,后来想想这个是PowerShell的天职,索性就网上各种 ...

  3. Node基础篇(文件操作)

    文件操作 相关模块 Node内核提供了很多与文件操作相关的模块,每个模块都提供了一些最基本的操作API,在NPM中也有社区提供的功能包 fs: 基础的文件操作 API path: 提供和路径相关的操作 ...

  4. 归档NSKeyedArchiver解归档NSKeyedUnarchiver与文件管理类NSFileManager (文件操作)

    ========================== 文件操作 ========================== 一.归档NSKeyedArchiver 1.第一种方式:存储一种数据. // 归档 ...

  5. SQL Server附加数据库报错:无法打开物理文件,操作系统错误5

    问题描述:      附加数据时,提示无法打开物理文件,操作系统错误5.如下图: 问题原因:可能是文件访问权限方面的问题. 解决方案:找到数据库的mdf和ldf文件,赋予权限即可.如下图: 找到mdf ...

  6. 通过cmd完成FTP上传文件操作

    一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ...

  7. Linux文件操作的主要接口API及相关细节

    操作系统API: 1.API是一些函数,这些函数是由linux系统提供支持的,由应用层程序来使用,应用层程序通过调用API来调用操作系统中的各种功能,来干活 文件操作的一般步骤: 1.在linux系统 ...

  8. C语言的fopen函数(文件操作/读写)

    头文件:#include <stdio.h> fopen()是一个常用的函数,用来以指定的方式打开文件,其原型为:    FILE * fopen(const char * path, c ...

  9. Python的文件操作

    文件操作,顾名思义,就是对磁盘上已经存在的文件进行各种操作,文本文件就是读和写. 1. 文件的操作流程 (1)打开文件,得到文件句柄并赋值给一个变量 (2)通过句柄对文件进行操作 (3)关闭文件 现有 ...

随机推荐

  1. 关于51单片机P0口的结构及上拉问题

    1.P0作为地址数据总线时,V1和V2是一起工作的,构成推挽结构.高电平时,V1打开,V2截止:低电平时,V1截止,V2打开.这种情况下不用外接上拉电阻.而且,当V1打开,V2截止,输出高电平的时候, ...

  2. Shell continue循环

    [oracle@june ~]$ cat continue.sh for i in a b c d e f g do if [ "$i" = "c" ] the ...

  3. COJ 0026 汉诺塔问题

    汉诺塔问题 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 经典的汉诺塔游戏相信很多同学都会玩的,规则就不用赘述,百科一下就OK ...

  4. Linux企业级项目实践之网络爬虫(30)——通过查阅RFC文档扩充更加复杂的功能

    HTTP是一种很简单的请求.响应式协议,客户端发送一个请求.服务器返回一个响应.HTTP 1.1 版本规范由 RFC2616 定义.了解了 HTTP请求.响应消息在TCP数据流中的格式,很容易使用纯 ...

  5. Zabbix中文使用手册

    一.Zabbix简介 详情参考“企业监控利器-zabbix”http://waringid.blog.51cto.com/65148/904201. 二.Zabbix使用 2.1 Zabbix框架介绍 ...

  6. HDFS文件读取详解

    客户端与HDFS文件读取 创建HDFS文件系统实例 FileSystem fs = FileSystem.get(new URI("hdfs://ns1"), new Config ...

  7. Hadoop分布式文件系统HDFS详解

    Hadoop分布式文件系统即Hadoop Distributed FileSystem.        当数据集的大小超过一台独立的物理计算机的存储能力时,就有必要对它进行分区(Partition)并 ...

  8. 【Ruby on Rails 学习一】ubuntu14.04配置rvm与ruby

    要安装ruby,首先要安装rvm,借助rvm安装ruby rvm 的全称是 Ruby Version Manager ,是一款由 Wayne E. Seguin  开发的一款命令行工具.rvm 能够让 ...

  9. SEO名词_黒帽SEO

    一.什么是黒帽SEO 黑帽SEO是指通过一些操控和欺骗找寻搜索引擎漏洞的一些技术,让关键词排名在很短的时间获得非常好的排名的一项技术 二.黒帽SEO的危害 如果被搜索引擎识别网站采用的是黑帽SEO手段 ...

  10. 数据库VIEW(视图)

    视图是基于 SQL 语句的结果集的可视化的表. 视图包括行和列,就像一个真实的表.视图中的字段就是来自一个或多个数据库中的真实的表中的字段. 我们能够向视图加入 SQL 函数.WHERE 以及 JOI ...