基于PHP常用文件函数和目录函数整理


Posted in PHP onAugust 17, 2017

一、常用文件函数库

1、basename(); -- 返回路径中的文件名部分。

string basename ( string $path [, string $suffix ] )
//给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名。

参数:path 一个路径。在 Windows 中,斜线(/)和反斜线(\)都可以用作目录分隔符。在其它环境下是斜线(/)

suffix 如果文件名是以 suffix 结束的,那这一部分也会被去掉。

返回值:返回 path 的基本的文件名。

$path = 'd:/test/test.txt';

echo basename($path);
echo "<br>";
echo basename($path,'.txt');

2、dirname(); -- 返回路径中目录部分

string dirname ( string $path )
//给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名。 

参数:path,一个路径。在 Windows 中,斜线(/)和反斜线(\)都可以用作目录分隔符。在其它环境下是斜线(/)。

返回值:返回 path 的父目录。 如果在 path 中没有斜线,则返回一个点('.'),表示当前目录。否则返回的是把path 中结尾的 /component(最后一个斜线以及后面部分)去掉之后的字符串。

$path = 'd:/test/test.txt';

echo basename($path);
echo "<br>";
echo basename($path,'.txt');
echo "<br>";
echo dirname($path);

3、pathinfo(); --返回文件路径的信息

mixed pathinfo ( string $path [, int $options = PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME ] )
//pathinfo() 返回一个关联数组包含有 path 的信息。返回关联数组还是字符串取决于 options。

参数: path 要解析的路径。

options 如果指定了,将会返回指定元素;它们包括:PATHINFO_DIRNAME,PATHINFO_BASENAME 和PATHINFO_EXTENSION 或 PATHINFO_FILENAME。如果没有指定 options 默认是返回全部的单元。 

返回值:如果没有传入 options ,将会返回包括以下单元的数组 array:dirname,basename 和 extension(如果有),以 及filename。

 

$path = 'd:/test/test.txt';
var_dump(pathinfo($path));

4、filetype();--取得文件类型

string filetype ( string $filename )
//返回文件的类型。

参数: filename 文件的路径。 

返回值: 返回文件的类型。

可能的值有 fifo,char,dir,block,link,file 和 unknown。如果出错则返回 FALSE。如果 stat 调用失败或者文件类型未知的话 filetype() 还会产生一个 E_NOTICE 消息。

$path = 'd:/test/test.txt';
echo filetype($path);
//结果file

5、fstat()和stat();

⑴、fstat()-通过已打开的文件指针取得文件信息

array fstat ( resource $handle )
//获取由文件指针 handle 所打开文件的统计信息。本函数和 stat() 函数相似,除了它是作用于已打开的文件指针而不是文件名。

参数: handle 文件系统指针,是典型地由 fopen() 创建的 resource(资源)。

返回值: 返回一个数组具有该文件的统计信息,该数组的格式详细说明于手册中 stat() 页面里。

⑵、stat() --给出文件的信息

array stat ( string $filename )
//获取由 filename 指定的文件的统计信息。如果 filename 是符号连接,则统计信息是关于被连接文件本身的,而不是符号连接。
//lstat() 和 stat() 相同,只除了它会返回符号连接的状态。

参数:filename 文件的路径.

$path = 'd:/test/test.txt';

$fp = fopen("d:/test/test.txt","r");
$fstat = fstat($fp);
fclose($fp);
var_dump($fstat);

6、filesize();--取得文件大小

int filesize ( string $filename )
//取得指定文件的大小。

参数:filename 文件的路径。

返回值:返回文件大小的字节数,如果出错返回 FALSE 并生成一条 E_WARNING 级的错误。

<?php

// 输出类似:test.txt:  bytes

$filename = 'd:/test/test.txt';
echo $filename . ': ' . filesize($filename) . ' bytes';

?>
//结果:d:/test/test.txt: 12 bytes

7、disk_free_space(); -- 返回目录中的可用空间

float disk_free_space ( string $directory )
//给出一个包含有一个目录的字符串,本函数将根据相应的文件系统或磁盘分区返回可用的字节数。 

参数:directory 文件系统目录或者磁盘分区。

header("Content-Type:Text/html;charset=utf8");
$path = 'd:/test/test.txt';
$df = disk_free_space("d:/");
echo $df."字节";

8、disk_total_space(); --返回一个目录的磁盘总大小

float disk_total_space ( string $directory )
//给出一个包含有一个目录的字符串,本函数将根据相应的文件系统或磁盘分区返回所有的字节数。 【译者注】本函数返回的是该目录所在的磁盘分区的总大小,因此在给出同一个磁盘分区的不同目录作为参数所得到的结果完全相同。 在 Unix 和 Windows 200x/XP 中都支持将一个磁盘分区加载为一个子目录,这时正确使用本函数就很有意义。

参数:directory 文件系统的目录或者磁盘分区

9、fopen($filepath,$mode) 

resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] )
//fopen() 将 filename 指定的名字资源绑定到一个流上

参数:filename 如果 filename 是 "scheme://..." 的格式,则被当成一个 URL,PHP 将搜索协议处理器(也被称为封装协议)来处理此模式。如果该协议尚未注册封装协议,PHP 将发出一条消息来帮助检查脚本中潜在的问题并将 filename 当成一个普通的文件名继续执行下去。

fopen() mode 的可能值列表
mode 说明
'r' 只读方式打开,将文件指针指向文件头。
'r+' 读写方式打开,将文件指针指向文件头。
'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'x' 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。
'x+' 创建并以读写方式打开,其他的行为和 'x' 一样。
<?php
$handle = fopen("/home/rasmus/file.txt", "r");
$handle = fopen("/home/rasmus/file.gif", "wb");
$handle = fopen("http://www.example.com/", "r");
$handle = fopen("ftp://user:password@example.com/somefile.txt", "w");
?>

10、file();--把整个文件读入一个数组中

array file ( string $filename [, int $flags = 0 [, resource $context ]] )
//把整个文件读入一个数组中。 

参数:filename 文件的路径。

flags 可选参数 flags 可以是以下一个或多个常量:

1、FILE_USE_INCLUDE_PATH 在 include_path 中查找文件。

2、FILE_IGNORE_NEW_LINES 在数组每个元素的末尾不要添加换行符

3、FILE_SKIP_EMPTY_LINES 跳过空行。

context 一个上下文资源,创建stream_context_create()函数。

<?php
// 将一个文件读入数组。本例中通过 HTTP 从 URL 中取得 HTML 源文件。
$lines = file('http://www.example.com/');
// 在数组中循环,显示 HTML 的源文件并加上行号。
foreach ($lines as $line_num => $line) {
  echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
}
// 另一个例子将 web 页面读入字符串。参见 file_get_contents()。
$html = implode('', file('http://www.example.com/'));
// 从 PHP 5 开始可以使用可选标记参数
$trimmed = file('somefile.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
?>

11、file_get_contents();-- 将整个文件读入一个字符串

string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )
//和 file() 一样,只除了 file_get_contents() 把文件读入一个字符串。将在参数 offset 所指定的位置开始读取长度为 maxlen 的内容。如果失败,file_get_contents() 将返回 FALSE。

参数:filename: 要读取的文件的名称。

use_include_path:As of PHP 5 the FILE_USE_INCLUDE_PATH can be used to trigger include path search.

context:A valid context resource created with stream_context_create(). 如果你不需要自定义 context,可以用 NULL 来忽略。

header("Content-Type:Text/html;charset=utf8");
// <= PHP 5
$file = file_get_contents('d:/test/test.txt', true);
echo $file.'<br>';
// > PHP 5
$file = file_get_contents('d:/test/test.txt', FILE_USE_INCLUDE_PATH);
echo $file;
//结果
//this is test
//this is test

12、fgets();--从文件指针中读取一行

string fgets ( resource $handle [, int $length ] )
//从文件指针中读取一行。 

参数:handle:文件指针必须是有效的,必须指向由 fopen() 或 fsockopen() 成功打开的文件(并还未由 fclose() 关闭)。

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

13、ftell();-- 返回文件指针读/写的位置

int ftell ( resource $handle )
//返回由 handle 指定的文件指针的位置,也就是文件流中的偏移量。 

参数:handle : 文件指针必须是有效的,且必须指向一个通过 fopen() 或 popen() 成功打开的文件。在附加模式(加参数 "a" 打开文件)中 ftell() 会返回未定义错误。

header("Content-Type:Text/html;charset=utf8");
// opens a file and read some data
$fp = fopen("d:/test/test.txt", "r");
$data = fgets($fp, 4);
// where are we ?
echo ftell($fp); // 结果3
fclose($fp);

14、fseek();--在文件指针中定位

int fseek ( resource $handle , int $offset [, int $whence = SEEK_SET ] )
//在与 handle 关联的文件中设定文件指针位置。 新位置从文件头开始以字节数度量,是以 whence 指定的位置加上 offset。

参数 :handle:文件系统指针,是典型地由 fopen() 创建的 resource(资源)。

offset:偏移量。要移动到文件尾之前的位置,需要给 offset 传递一个负值,并设置 whence 为 SEEK_END。

whence values are:

1、SEEK_SET - 设定位置等于 offset 字节。

2、SEEK_CUR - 设定位置为当前位置加上 offset。

3、SEEK_END - 设定位置为文件尾加上 offset。

header("Content-Type:Text/html;charset=utf8");
$fp = fopen('d:\test\test.txt', 'r');
// read some data
$data = fgets($fp, 4096);
// move back to the beginning of the file
// same as rewind($fp);
 fseek($fp, 0);

15、flock();--轻便的咨询文件锁定 

bool flock ( resource $handle , int $operation [, int &$wouldblock ] )
//flock() 允许执行一个简单的可以在任何平台中使用的读取/写入模型(包括大部分的 Unix 派生版和甚至是 Windows)。

参数:handle 文件系统指针,是典型地由 fopen() 创建的 resource(资源)。

operation 可以是以下值之一:

1、LOCK_SH取得共享锁定(读取的程序)。

2、LOCK_EX 取得独占锁定(写入的程序。

3、LOCK_UN 释放锁定(无论共享或独占)。

如果不希望 flock() 在锁定时堵塞,则是 LOCK_NB(Windows 上还不支持)。

wouldblock:如果锁定会堵塞的话(EWOULDBLOCK 错误码情况下),可选的第三个参数会被设置为 TRUE。(Windows 上不支持)

if (flock($fp, LOCK_EX)) { // 进行排它型锁定
  ftruncate($fp, 0);   // truncate file
  fwrite($fp, "Write something here\n");
  fflush($fp);      // flush output before releasing the lock
  flock($fp, LOCK_UN);  // 释放锁定
} else {
  echo "Couldn't get the lock!";
}

fclose($fp);

16、is_readable --判断给定文件名是否可读

bool is_readable ( string $filename )
//判断给定文件名是否存在并且可读。 

参数:filename:文件的路径。

返回值:如果由 filename 指定的文件或目录存在并且可读则返回 TRUE,否则返回 FALSE。 

$filename = 'd:\test\test.txt';
if (is_readable($filename)) {
  echo 'The file is readable';
} else {
  echo 'The file is not readable';
}
//The file is readable

17、is_writeable -- 判断给定的文件名是否可写

bool is_writable ( string $filename )
//如果文件存在并且可写则返回 TRUE。filename 参数可以是一个允许进行是否可写检查的目录名。

参数:filename 要检查的文件名称。

$filename = 'd:\test\test.txt';
if (is_writeable($filename)) {
  echo 'The file is writeable';
} else {
  echo 'The file is not writeable';
}
//The file is writeable

18、chown(); -- 改变文件的所有者

bool chown ( string $filename , mixed $user )
//尝试将文件 filename 的所有者改成用户 user(由用户名或用户 ID 指定)。 只有超级用户可以改变文件的所有者。

参数:filename:文件路径。

user:用户名或数字。

二、目录函数

1、is_dir();--判断给定文件名是否是一个目录

bool is_dir ( string $filename )
//判断给定文件名是否是一个目录。 

参数:filename:如果文件名存在并且为目录则返回 TRUE。如果 filename 是一个相对路径,则按照当前工作目录检查其相对路径。

$filename = 'd:\test\test.txt';
var_dump(is_dir('$filename'));  //bool(false) 
var_dump(is_dir('d:\test'));    //bool(true)

2、mkdir();--新建目录

bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )//尝试新建一个由 pathname 指定的目录。

参数:pathname:目录的路径。

mode:默认的 mode 是 0777,意味着最大可能的访问权。有关 mode 的更多信息请阅读 chmod() 页面。
mkdir("d:/test/test1", 0700);

3、opendir();--打开目录句柄

resource opendir ( string $path [, resource $context ] )
//打开一个目录句柄,可用于之后的 closedir(),readdir() 和 rewinddir() 调用中。 

参数:path 要打开的目录路径

context 参数的说明见手册中的 Streams API 一章。

4、readdir();--从目录句柄中读取条目

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

参数:dir_handle 目录句柄的 resource,之前由 opendir() 打开

header("Content-Type:Text/html;charset=utf8");
if ($handle = opendir('d:/test')) {
  echo "Directory handle: $handle\n";
  echo "Files:\n";

  /* 这是正确地遍历目录方法 */
  while (false !== ($file = readdir($handle))) {
    echo "$file\n";
  }

  /* 这是错误地遍历目录的方法
  while ($file = readdir($handle)) {
    echo "$file\n";
  }
  */
  closedir($handle);
}

以上这篇基于PHP常用文件函数和目录函数整理就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP生成静态页面详解
Dec 05 PHP
PHP5 的对象赋值机制介绍
Aug 02 PHP
php数组函数序列之in_array() 查找数组值是否存在
Oct 29 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
Aug 07 PHP
PHP中实现生成静态文件的方法缓解服务器压力
Jan 07 PHP
php curl_init函数用法
Jan 31 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
Jun 19 PHP
PHP文件上传之多文件上传的实现思路
Jan 27 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
Apr 02 PHP
yii2 页面底部加载css和js的技巧
Apr 21 PHP
php抛出异常与捕捉特定类型的异常详解
Oct 26 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 PHP
PHP实现的堆排序算法详解
Aug 17 #PHP
基于php编程规范(详解)
Aug 17 #PHP
PHP数据库操作四:mongodb用法分析
Aug 16 #PHP
PHP Laravel 上传图片、文件等类封装
Aug 16 #PHP
PHP数据库操作三:redis用法分析
Aug 16 #PHP
PHP数据库操作二:memcache用法分析
Aug 16 #PHP
PHP数据库编程之MySQL优化策略概述
Aug 16 #PHP
You might like
php处理文件的小例子(解压缩,删除目录)
2013/02/03 PHP
PHP错误和异长常处理总结
2014/03/06 PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
2016/08/08 PHP
laravel实现简单用户权限的示例代码
2019/05/28 PHP
50个比较实用jQuery代码段
2011/09/18 Javascript
基于jquery的文章中所有图片width大小批量设置方法
2013/08/01 Javascript
JavaScript加入收藏夹功能(兼容IE、firefox、chrome)
2014/05/05 Javascript
jQuery+php实时获取及响应文本框输入内容的方法
2016/05/24 Javascript
Bootstrap编写一个兼容主流浏览器的受众门户式风格页面
2016/07/01 Javascript
jQuery实现倒计时重新发送短信验证码功能示例
2017/01/12 Javascript
jQuery获取table下某一行某一列的值实现代码
2017/04/07 jQuery
vue实现长图垂直居上 vue实现短图垂直居中
2017/10/18 Javascript
vue数据控制视图源码解析
2018/03/28 Javascript
解决vue 引入子组件报错的问题
2018/09/06 Javascript
生产制造追溯系统之再说条码打印
2019/06/03 Javascript
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
[57:18]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#3VP VS VG
2016/03/03 DOTA
[01:02:53]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第二局
2016/03/06 DOTA
[56:14]Fnatic vs OG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
一波神奇的Python语句、函数与方法的使用技巧总结
2015/12/08 Python
Django 表单模型选择框如何使用分组
2019/05/16 Python
python实现windows倒计时锁屏功能
2019/07/30 Python
python 中值滤波,椒盐去噪,图片增强实例
2019/12/18 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
2020/07/28 Python
python 偷懒技巧——使用 keyboard 录制键盘事件
2020/09/21 Python
python中xlrd模块的使用详解
2021/02/01 Python
thinkphp5 路由分发原理
2021/03/18 PHP
加拿大最大的钻石商店:Peoples Jewellers
2018/01/01 全球购物
大学生毕业求职简历的自我评价
2013/10/24 职场文书
作弊检讨书1000字
2014/02/01 职场文书
双创工作实施方案
2014/03/26 职场文书
防卫过当辩护词
2015/05/21 职场文书
雷锋观后感
2015/06/10 职场文书
企业廉洁教育心得体会
2016/01/20 职场文书
财务会计个人原因辞职信
2019/06/21 职场文书
Vue OpenLayer测距功能的实现
2022/04/20 Vue.js