1 文件与目录

1.1 解析目录路径

1) 获取路径的文件

string basename(string path, [, string suffix])

如果提供了可选参数suffix,当返回的文件名包含这个扩展名时将忽略该后缀。

2) 获取路径的目录

string dirname(string path)

返回路径的目录部分。

3) 更多关于路径的信息

array pathinfo(string path [, options])

返回一个关联数组,其中包括路径的四部分信息:目录名、基本名、扩展名和文件名

$pinfo = pathinfo(“/path/to/index.html”);

$pinfo[‘dirname’]

$pinfo[‘basename’]

$pinfo[‘extension’]

$pinfo[‘filename’]

4) 确定绝对路径

string realpath(string path)

将path中的所有符号链接和相对路径引用转换为相应的硬链接和绝对路径。

1.2 计算文件、目录和磁盘大小

1) 确定文件的大小

int filesize(string filename)返回指定文件的大小,以字节为单位。

2) 计算磁盘的可用空间

float disk_free_space(string directory)返回指定目录所在磁盘分区的可用空间,以字节为单位。

3) 计算磁盘的总容量

float disk_total_space(string directory)返回指定目录所在的磁盘分区的总容量,以字节为单位。

4) 获取目录大小

function directorySize($directory){

$directorySize = 0;

if($dh = @opendir($directory)){

while($filename != “.” && $filename != “..”){

if(is_file($directory.”/”.$filename))

$directorySize += filesize($directory.”/”.$filename);

if(is_dir($directory.”/”.$filename))

$directorySize += directorySize($directory.”/”.$filename);

}

}

}

1.3 确定访问和修改时间

1) 确定文件的最后访问时间

int fileatime(string filename)返回文件最后的访问时间,采用UNIX时间戳格式。

2) 确定文件最后改变时间

int filectiome(string filename)

注:最后改变时间是对inode的相关信息修改的最后时间

3) 确定文件的最后修改时间

int filemtime(string filename) 返回文件的最后修改时间。

2 文件处理

资源(resource)这个词常与可以发起输入或输出流的实体联系在一起。标准输入或输出、文件和网络套接字都是资源的例子。

换行符通过字符\n表示,表示文件中一行的末尾。

程序需要一种标准的方式来识别合适到达文件的末尾。这个标准通常称为文件末尾(或EOF)字符。在PHP中,feof()函数用来确定是否到达资源末尾,它在文件IO操作中经常使用。

2.1 打开和关闭文件

1) 打开文件

resource fopen(string resource, string mode [, int use_include_path [, resource context]])

文件打开模式定义:

R 只读

r+ 读写

W 只写。删除全部已有内容。

w+ 读写。

A 只写,向文件追加内容

x 创建并打开只写的文件。

x+ 创建并以读写方式打开文件

如果use_include_path为1,则PHP考虑配置指令include_path中指定的路径。

2) 关闭文件

boolean fclose(resource filehandle)

filehandle必须是使用fopen()或fsockopen()打开的已存在的文件指针。

2.2 读取文件

1) 将文件读入数组

array file(string filename [int use_include_path [, resource context]]) 能够将文件读取到数组中,换行符附加在每个元素的末尾。

注意:file()很特殊,它不像其它读写函数,它不必建立文件句柄来读取文件内容。

2) 将文件内容读入字符串变量

string file_get_contents(string filename [int use_include_path [, resource context [, int offset [, int maxlen]]]]) 将文件中的内容读到字符串中。

3 将CSV文件读入数组

array fgetcsv(resource handle [, int length [, string delimiter [, string enclosure]]])

省略length或将其设为0都会导致任意的行长度。可以设置一个比最大行大的数值用来提升性能。

file()和list()可以实现fgetcsv()函数的功能

[code]

$users = file(“/usr/data/s.csv”);

foreach($users as $user){

list($name, $email, $phone) = explode(‘,’, $user);

….

}

[/code]

这种方式客观性更强一些。使用fgetcsv()时如果希望遇到换行符停止,那么不能指定长度,否则不可控。

4 读取指定书目的字符

string fgets(resource handel [, int length])

从 handle 指向的文件中读取一行并返回长度最多为 length – 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length – 1 字节后停止(看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。

[code]

$h = fopen(‘t.txt’,’r’);

$i=1;

while(!feof($h)){

echo $i.’->’.fgets($h, 10);

$i++;

}

fclose($h);

[/code]

从以上程序可以测试出,每次读取9个字符,但是如果先遇到换行或EOF,则忽略长度限制。如果把length设置的比较大,则可以看做是读取文件行函数,当然它有移动文件位置指针。

5 从输入中剔除标签

string fgetss(resource handle, int length [, string allowable_tags])

和fgets()函数类似,只是它从输入中清除所有HTML和PHP标签。如果要忽略某些标签,就把其放入allowable_tags中。参数 length 从 PHP 5 起开始可选。

[code]

$tags = ‘

’;

$fh = fopen(“a.html”,”r”);

while(!feof($fh)){

$article .= fgetss($fh, 1024, $tags);

}

fclose($fh);

$fh = fopen(“a.html”, “w”);

fwrite($fh, $article);

fclose($fh);

[/code]

6 以一次读取一个字符的方式读取文件

stirng fgetc(resource handel)

7 忽略换行符

string fread(resource handle, int length)

fread不考虑换行符,当读取了length个字节或到达了EOF则停止,它有助于读取二进制文件。只要使用filesize()确定了应当读取的字符数,就能很方便使用这个函数读取整个文件。

[code]

$file = ‘/var/data/users.txt’;

$fh = fopen($file, ‘r’);

$userdata = fread($fh, filesize($file));

fclose($fh);

filesize()返回文件有多少个字节。

[/code]

8 读取整个文件

int readfile(string filename [, int use_include_path]) 读取由filename指定的整个文件,立即输出到缓冲区并返回读取的字节数。

9 根据预定义的格式读取文件

mixed fscanf(resource handle, string format [, string var1]) 按照预定义的格式解析资源

2.3 将字符串写入文件

int fwrite(resource handle ,string string [, int length]) 将字符串的内容输出到指定的资源中。

2.4 移动文件指针

1) 将文件指针移到偏移量指定的位置

int fseek(resource handle, int offset [, int whence])

2) 获取当前指针的偏移量

int ftell(resource handle)

3) 将文件指针移回至文件开始处

int rewind(resource handle)

2.5 读取目录内容

1) 打开目录句柄

resource opendir(string path, [, resource context])

2) 关闭目录句柄

void closedir(resource directory_handle)

3) 解析目录内容

string readdir(resource dir_handle) 返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。

4) 将目录读入数组

array scandir(string directory [, int sorting_order [, resource context]])

3 执行shell命令

1) 删除目录

int rmdir(string dirname)

2) 重命名文件

boolean rename(string oldname, string newname [, resource context])

3 touch文件

int touch(string filename [, int time [, int atime]]) 文件不存在将创建空文件

4 系统级程序执行

4.1 清理输入

string escapeshellarg(string arguments) 函数用单引号界定给定的参数,并为输入的参数中的单引号进行转义。

string escapeshellcmd(string command)

4.2 PHP的程序执行函数

1) 执行系统级命令

string exec(string command [, array &output [, &retrun_var]])

2) 获取系统命令的结果

string system(string command, [, int return_var]) 函数直接将输出返回给调用者。

3) 返回二进制输出

void passthru(string command [, int &return_var])

4) 用反引号执行shell命令

使用反引号界定字符串时,就是告诉PHP该字符串应当作为shell命令来执行。

5 可代替反引号的函数

string shell_exec(string command)

php 操作系统,PHP 处理文件和操作系统相关推荐

  1. linux操作系统怎么创建文件,Linux操作系统创建文件命令的方法

    创建文件 mkdir aaa mkdir –p aaa 创建文件夹命令 Vi foo.txt emacs foo.txt echo "aaa">foo.txt cat > ...

  2. linux find 删除文件夹,linux中find与rm实现查找并删除目录或文件linux操作系统 -电脑资料...

    在linux中find是查找搜索文件而rm是删除文件,下面我们来看一篇linux中find与rm实现查找并删除目录或文件的实例,希望文章对大家会有所帮助, 删除指定目录下指定文件 find 要查找的目 ...

  3. linux复制压缩文件夹,[操作系统]linux中文件或者文件夹的基本操作(复制,移动,删除,查找,压缩)...

    [操作系统]linux中文件或者文件夹的基本操作(复制,移动,删除,查找,压缩) 0 2015-12-28 00:00:15 linux 文件(文件夹)的创建,复制,移动,重命名,删除基本命令 复制文 ...

  4. 【操作系统基础】文件管理系统(一)

    一.初始文件管理 由于系统的内存有限并且不能长期将文件保存在内存中,因此平时总是将它们以文件的形式存放在外存中,需要时再将它们调入内存.如何合理并高效地进行文件管理是操作系统实现的目标. 1. 文件的 ...

  5. 【操作系统基础】文件管理系统(二)

    四.文件的物理结构 1. 文件块与磁盘块 在内存管理中,进程的逻辑地址空间被分为一个一个页面.同样的,在外存管理中,为了方便对文件数据的管理,文件的逻辑地址空间也被分为了一个一个的文件"块& ...

  6. 操作系统中文件系统-文件的分类

    一.文件的概念 1. 文件(file) (1) 文件是软件机构,软件资源的管理方式: (2) 具有符号名的一组相关元素的有序序列,是一段程序或数据的集合: (3) 一组赋名的相关联字符流的集合,或者是 ...

  7. 操作系统怎么把文件放到docker容器里

    操作系统怎么把文件放到docker容器里 完美拷贝本地文件到docker容器: (1)查找容器 docker ps -a (2)确定我们的容器名,并获取容器长ID docker inspect -f ...

  8. 【操作系统】30天自制操作系统--(27)文件操作

    本章主要介绍了对 _alloca 函数的兼容,日文的显示,以及着重介绍了文件系统操作. 一 对_alloca的支持 首先作者写了一个小应用程序,功能是找出并打印1000以内的质数: #include ...

  9. python 文件管理系统为用户_操作系统中的文件管理系统为用户提供的功能是什么...

    操作系统中的文件管理系统为用户提供的功能是按文件名管理文件,文件管理主要负责文件的存储.检索.共享和保护,为用户提供文件操作的方便. 操作系统中的文件管理系统为4 D R Y W 5用户提供的功能是按 ...

最新文章

  1. Spring Boot 最最最常用的注解梳理
  2. CNN如何用于NLP任务?一文简述文本分类任务的7个模型(附代码)
  3. javascript之温习闭包
  4. [转载]使用RoboCopy 命令
  5. qt中树形控件QTreeWidget的项点击后获取该项的文本
  6. 计划的执行与回顾的重要性与必要性
  7. 实现自动文本摘要(python,java)
  8. python入门之正则表达式
  9. Python实现中文转化为对应的拼音以及拼音转化为相应的中文
  10. Python的中文处理
  11. netconsole 重定向kernel日志到远程服务器
  12. 简述:bs和cs的区别
  13. java页面展示_JAVA页面展示问题
  14. 小学期云效能训练营-Day04
  15. eclipse更改java版本
  16. 项目管理心得体会(一)
  17. java编程找出吸血鬼数字,找出四位數的所有吸血鬼數字(JAVA)
  18. 灵信视觉led。六代卡和五代卡
  19. 如何通过采购管理为房地产企业创造价值?
  20. 区域一体化电子病历系统管理源码 医院SOA架构 医院源码

热门文章

  1. Intellij idea 添加浏览器
  2. mysql安装教程_mysql8.0.20安装教程,mysql下载安装教程8.0.20
  3. 怎样使用python画复杂函数_在python中绘制复杂的函数?
  4. js/jquery 获取本地文件的文件路劲 获取input框中type=‘file’ 中的文件路径(转载)...
  5. 2015.7.9(1000股涨停,未按分段交易中国重工、中国软件减仓失误!补做大智慧、中色股份追高,而后控制仓位预防高开跳水——重新整理分段交易原则)发现中软吸筹率极高...
  6. [leetcode]Search in Rotated Sorted Array II
  7. 第二个结对编程——UI设计
  8. Java中的一些基础概念
  9. Silverlight的发布
  10. 【个人笔记】OpenCV4 C++ 快速入门 19课