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. 图的建立——邻接表表示(C语言+VC6.0平台)

    图是一种重要而且相对复杂的数据结构,在实际编程中非常有用.邻接表是图的主要表示形式之一,是一种链接表表示方法. #include<stdio.h> #include<stdlib.h ...

  2. QT 让窗口(或控件)居中

    代码如下: XXX::XXX(QWidget *parent /* = 0 */) { .................. //注意,resize一定要放在这段代码的前面 resize(300, 3 ...

  3. SpringBoot笔记一

    1 开始 1.1 spring介绍 Spring Boot使开发独立的,产品级别的基于Spring的应用变得非常简单,你只需"just run". 我们为Spring平台及第三方库 ...

  4. HDOJ 1164 Eddy's research I(拆分成素数因子)

    Problem Description Eddy's interest is very extensive, recently he is interested in prime number. Ed ...

  5. 什么是Ajax? (转载于疯狂客的BLOG)

    Ajax的定义 Ajax不是一个技术,它实际上是几种技术,每种技术都有其独特这处,合在一起就成了一个功能强大的新技术. Ajax包括: XHTML和CSS,使用文档对象模型(Document Obje ...

  6. ASP.NET MVC 3 Razor Nested foreach with if statements

    You need to write code this way. @Html.Raw("<tr>") Copy the below code and paste it ...

  7. class$1,class$2,class$innerclass中的$的含义

    class文件名中的$的含义如下:   $后面的类是$前面的类的内部类 内部类有以下两种情况: 1.普通的组合类形式,即在一个类内部定义一个普通的类  public class Outer { cla ...

  8. CDH-5.4.3离线安装

    使用CM离线安装CDH-5.4.3,如下: cdh5.4.3安装 配置/etc/hosts vim /etc/hosts 192.168.10.1 s1 192.168.10.2 s2 192.168 ...

  9. C - Critical Links - uva 796(求桥)

    题意:有一些网络通过一些线路连接,求关键的连接,也就是桥,如果删除这个链接那么会产生两个子树 分析:注意一下图不是连通图即可 ************************************* ...

  10. Comprehensive learning path – Data Science in Python深入学习路径-使用python数据中学习

    http://blog.csdn.net/pipisorry/article/details/44245575 关于怎么学习python,并将python用于数据科学.数据分析.机器学习中的一篇非常好 ...