`
chaoyi
  • 浏览: 290120 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

第 6 章 目录与文件

 
阅读更多

学习要点:
1.目录操作
2.磁盘、目录和文件计算
3.文件处理

将相关的数据组织为文件和目录等实体,这一直是计算环境的核心概念。出于这个原因 ,程序员需要有一种方法来获得关于文件和目录的重要细节,如位置、大小、最后修改时间、最后访问时间和其他确定信息。

一.目录操作
解析目录路径:basename()函数返回路径的文件名部分。

<?
$path = 'C:\AppServ\www\Basic6\Demo1.php' ;
echo 'path:' .basename($path);
?>

 
获取路径的目录:dirname()函数返回路径目录部分。

<?
$path = 'C:\AppServ\www\Basic6\Demo1.php' ;
echo 'path:' .dirname($path);
?>

 
关于路径的信息: pathinf o()函数创建一个关联数组,其中包括:目录名、基本名和扩展名。

<?
$path = 'C:\AppServ\www\Basic6\Demo1.php' ;
$array_path = pathinfo($path);
print_r($array_path);
?>

 
确定绝对路径:realpath()函数将 path 中的所有符号链接和相对路径引用转换为相应的硬链接和绝对路径。

<?
$path = '../index.php' ;
echo realpath($path);
?>

 
二.磁盘、目录和文件计算
确定文件的大小:filesize() 函数返回指定文件字节大小。

<?
$file = 'C:\AppServ\www\Basic 6\Demo1.php';
echo round(filesize( $file)/ 1024 , 2).'KB' ;
?>

 
计算磁盘的可用空间:disk_free_space()函数返回指定的目录所在磁盘分区的可用空间。

<?
$drive = 'C:' ;
echo round(disk_free_space($drive)/1024/1024,2). 'MB' ;
?>

 
计算磁盘的总容量:disk_total_space()函数返回指定的目录所在磁盘分区的总容量。

<?
$drive = 'C:' ;
echo round(disk_total_space($drive)/1024 / 1024 , 2).'MB' ;
?>

 
确定文件的最后访问时间:fileatime()函数返回文件的最后访问时间,采用的 Unix 时间戳格式。

<?
$file = 'C:\AppServ\www\Basic 6\Demo1.php';
echo date("Y-m-d,h:i:s" ,fileatime( $file));
?>

 
确定文件的最后改变时间:filectime()函数返回文件的最后改变时间,采用 Unix 时间戳格式。

<?
$file = 'C:\AppServ\www\Basic 6\Demo1.php';
echo date("Y-m-d,h:i:s" , filectime ( $file));
?>


确定文件的最后修改时间: filemtime() 函数返回文件的最后修改时间,采用 Unix 时间戳格式。

<?
$file = 'C:\AppServ\www\Basic5\Demo1.php' ;
echo date("Y-m-d,h:i:s" , filemtime ($file));
?>

 
三.文件处理
资源(resource)这个词常常与可以发起输入或输出流的实体联系起来。标准输入或输出、文件和网络套接字都是资源的例子。因此你会经常看到本节所介绍的很多函数都是在资源处理的上下文中讨论的,而不是文件处理,这本身是因为所有这些函数都能够与前面所述的资源结合使用。但是,由于这些函数与文件结合使用是应用中最常见的。

将数据写入一个文件,有 3 个步骤:
1. 打开这个文件。如果文件不存在,需要先创建它。
2. 将数据写入这个文件。
3. 关闭这个文件

同样,从一个文件中读出数据,也有 3 个步骤:
1. 打开这个文件。如果这个文件不能打开,就应该意识到这一点并且正确地退出。
2. 从文件中读出数据。
3. 关闭这个文件。

打开文件
要在 PHP 中打开一个文件,可以使用 fopen() 函数。当打开一个文件的时候,还需要指定如何使用它。也就是,文件模式。

选择文件模式:当打开一个文件的时候,有 3 中选择:
1. 打开文件为了只读、只写或者读和写。
2. 如果要写一个文件,你可能希望覆盖所有已有的文件内容,或者仅仅将新数据追加到文件末尾。如果该文件已经存在,也可以终止程序的执行而不是覆盖该文件。
3. 如果希望在一个区分了二进制方式和纯文本方式的系统上写一个文件,还必须制定采用的方式。

函数 fopen() 支持以上 3 中方式的组合。
$fp=fopen(文件路径 , 文件模式 , [ 是否在 incloude_path 中搜索一个文件],[ 允许文件名以协议名称开始(如 http://)] )



 
如果 fopen() 函数调用失败,函数将返回 false 。可以用一种对于用户友好的方式来处理这个错误,可以通过抑制 PHP 的错误信息并且根据自己的方式给出错误信息。

@$fp=fopen("file.txt",'ab' ); //ab 追加并且二进制方式

 
写文件
在 PHP 中写文件相对比较简单。可以使用 fwrite() 或者 fputs() 函数。我们可以使用如下方式调用 fwrite();

fwrite($fp, $outputstring, [int length]); //第三个可选参数为最大字符数

这个函数告诉 PHP 将保存在$outputstring 中的字符串写入到$fp 指向的文件中。
fwrite()函数的一个新的替换函数是 file_put_contects().

可以通过 PHP 的内置 strlen() 函数获得字符串的长度:

fwrite($fp, $outputstring, strlen($outputstring));

 
当然还有一种不需要资源句柄的写入方法:file_put_contents ()。

关闭文件
当文件使用完毕后,应该将其关闭。应该调用 fclose() 函数:

fclose( $fp);

 
读出文件

$fp = fopen("file.txt" , "r");

 
fgetc() :读出一个字符,并将指针移到下一个字符。
fgets():读出一行字符,可以指定一行显示的长度。
fgetss () :从文件指针中读取一行并过滤掉 HTML 标记。
fread():读取定量的字符。
fpassthru (): 输出文件指针处的所有剩余数据。
file():将整个文件读入数组中,以行分组。
readfile():读入一个文件并写入到输出缓冲。
file_get_contents ():将整个文件读入一个字符串。

while (!feof( $fp)) {
echo fgetc($fp);
}

 
判断读完文件函数:feof() ,返回 true ,!feof() 返回 false;

查看文件是否存在:file_exists();

if (file_exists("file.txt")) {
//..
}
else {
//...
}

 
查看一个文件的大小:filesize();
删除一个文件:unlink();
在文件中定位:rewind() 、fseek()和 ftell();
rewind() 函数可以将文件指针复位到文件的开始。
ftell()函数可以以字节为单位报告文件指针当前在文件中的位置。
fseek()函数可以将文件指针 fp 从 whence 位置移动 offset 字节。

文件锁定
假设两个客户试图同时订购同一件商品。那么他们同时打开了这个文件,同时的更新,就会出现少一个客户订购的数据。
为了避免这样的问题,可以使用文件锁定的方法。
flock()函数。

 
flock 的操作值

$fp = fopen("file.txt" , "ab");
flock( $fp,LOCK_EX); //锁定
fwrite($fp, $outsum);
flock( $fp, LOCK_UN); //释放
fclose( $fp);

 
目录句柄操作
opendir():打开路径指定的目录流。
closedir():关闭目录流。
readdir():返回目录中的各个元素。

$dir = opendir('C:\AppServ\www\Basic5' );
while (!! $file = readdir( $dir)) {
echo $file.'<br />';
}
closedir( $dir);

 
scandir():将目录读入数组。

print_r(scandir('C:\AppServ\www\Basic5' ));


rmdir() :删除指定的目录。

rmdir('C:\AppServ\www\Basic5\123' );

 
rename() :重命名文件。

rename('Demo1.php' ,'Demo01.php' );

 

  • 大小: 24 KB
  • 大小: 32.4 KB
  • 大小: 21 KB
分享到:
评论

相关推荐

    第6章 目录与文件

    NULL 博文链接:https://onestopweb.iteye.com/blog/2203533

    精品课件 Python从入门到精通 第13章 文件及目录操作(共26页).ppt

    Python从入门到精通 第6章 字典与集合.ppt Python从入门到精通 第7章 字符串.ppt Python从入门到精通 第8章 Python中使用正则表达式.ppt Python从入门到精通 第9章 函数.ppt Python从入门到精通 第10章 面向对象程序...

    《C#.Net 程序设计》课件

    第1章概述 第2章C#数据类型 第3章面向对象的编程基础 第4章面向对象的高级编程 第5章窗体界面设计 第6章目录与文件管理 第7章正则表达式与Internet操作 第8章ADO.NET与SQLServer 第9章二维图形图像处理 第10章基于...

    c#网络应用编程基础

    第1章 概述 第2章 C#数据类型 第3章 面向对象的编程基础 第4章 面向对象的高级编程 第5章 Windows窗体界面设计 第6章 目录与文件管理 第7章 正则表达式与Internet操作 第8章 ADO.NET与SQL...

    Python程序设计第6章+文件操作.pptx

    第1章 初识Python程序 目录 /CONTENTS 第2章 程序基本构成 第3章 控制结构 第4章 函数 第5章 复合数据类型 第6章 文件操作 第7章 数据可视化 第8章 图像处理 Python程序设计第6章+文件操作全文共44页,当前为第2页...

    第6章 文件和目录管理1

    第 6 章 Linux 文件和目录管理文件和目录管理是使用操作系统过程中经常涉及的基本工作。本节将系统地介绍 Linux 文件系统的组织结构、文件系统的权限管理

    Csharp入门经典(第四版).part5.rar

    第6章 函数 第7章 调试和错误处理 第8章 面向对象编程简介 第9章 定义类 第10章 定义类成员 第11章 集合、比较和转换 第12章 泛型 第13章 其他OOP技术 第14章 C#3.0语言的改进 第2部分 Windows编程 第15章 Windows...

    计算机网络实用技术 (详细目录)

    第6章 Windows 2000简介及安装 第7章 使用和管理Windows 2000活动目录 第8章Windows 2000的网络互连 第9章 目录与文件权限的管理 第10章用户工作环境的管理 第11章 组策略 第12章 终端服务的安装与设置 第13章 配置...

    精品课件 Python从入门到精通 第6章 字典与集合(共8页).ppt

    Python从入门到精通 第6章 字典与集合.ppt Python从入门到精通 第7章 字符串.ppt Python从入门到精通 第8章 Python中使用正则表达式.ppt Python从入门到精通 第9章 函数.ppt Python从入门到精通 第10章 面向对象程序...

    精品课件 Python从入门到精通 第2章 Python语言基础(共32页).ppt

    Python从入门到精通 第6章 字典与集合.ppt Python从入门到精通 第7章 字符串.ppt Python从入门到精通 第8章 Python中使用正则表达式.ppt Python从入门到精通 第9章 函数.ppt Python从入门到精通 第10章 面向对象程序...

    精品课件 Python从入门到精通 第3章 运算符与表达式(共6页).ppt

    Python从入门到精通 第6章 字典与集合.ppt Python从入门到精通 第7章 字符串.ppt Python从入门到精通 第8章 Python中使用正则表达式.ppt Python从入门到精通 第9章 函数.ppt Python从入门到精通 第10章 面向对象程序...

    鸟哥的私房菜.pdf

    第6章 Linux的文件权限与目录配置 第7章 Linux文件与目录管理 第8章 Linux磁盘与文件系统管理 第9章 文件与文件系统的压缩与打包 第三部分 学习shell与shell script 第10章 vim程序编辑器 第11章 认识与学习...

    精品课件 Python从入门到精通 第20章 Web编程(共14页).pptx

    Python从入门到精通 第6章 字典与集合.ppt Python从入门到精通 第7章 字符串.ppt Python从入门到精通 第8章 Python中使用正则表达式.ppt Python从入门到精通 第9章 函数.ppt Python从入门到精通 第10章 面向对象程序...

    深入JAVA虚拟机第二版.pdf 目录

    第6章 Java class文件 第7章 类型的生命周期 第8章 连接模型 第9章 垃圾收集 第10章 栈和局部变量操作 第11章 类型转换 第12章 整数运算 第13章 逻辑运算 第14章 浮点运算 第15章 对象和数组 第16章 控制流 第17章 ...

    鸟哥的Linux私房菜基础学习篇(第二版PDF)02

     第6章 Linux的文件属性与目录配置   第7章 Linux文件和目录管理   第8章 Linux磁盘与文件系统管理   第9章 文件的压缩与打包  第三部分 学习Shell和Shell脚本  第10章 vi文字处理器   第11章 ...

    全国计算机二级C语言等级考试视频教程-6-11章

    计算机二级C语言等级考试总16章,43小时,3.3g,视频教程,由于一次只能上传1g,所以分3个资源上传 6-11章 总目录: 第01章 程序设计 第02章 数据和表达式 第03章 输出和输入函数 ...第16章 六组文件函数的应用

    《嵌入式Linux应用程序开发标准教程》(第2版)-第6章-文件IO编程

    《嵌入式Linux应用程序开发标准教程》(第2版)-第6章-文件IO编程

    Pyhton实用教程-第1章-初识Python.pptx

    目录 PAGE 3 第1章 初识Python 第2章 基本数据类型 第3章 Python的流程控制 第4章 数组操作 第5章 文件操作 第6章 绘制需要的图表 第7章 函数 第8章 面向对象 第9章 异常 第10章 集合与概率 第11章 学点统计学 第12...

    精品课件 Python从入门到精通 第5章 列表与元组(共30页).ppt

    Python从入门到精通 第6章 字典与集合.ppt Python从入门到精通 第7章 字符串.ppt Python从入门到精通 第8章 Python中使用正则表达式.ppt Python从入门到精通 第9章 函数.ppt Python从入门到精通 第10章 面向对象程序...

    第二章 Linux 常用命令训练 答案

    2.熟悉 Linux 关于文件和目录操作的常用命令。 3.掌握 Linux 关于用户和系统操作的常用命令。 4.掌握查看命令帮助的方法。 5.掌握 Linux 中变量、流、管道操作的命令。 6.掌握 Linux 中进程操作的命令。 7.掌握...

Global site tag (gtag.js) - Google Analytics