菜单

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

2019年3月9日 - 金沙编程资讯

  1、is_dir();–判断给定文件名是或不是是3个索引

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)

 


  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

 


参数:pathname:目录的路径。

2 文件处理

  1八 、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)

 


参数
handle:文件系统指针,是第一级地由 fopen() 创制的
resource(能源)。

1.3 鲜明访问和修改时间

  1. 获得文件的上次访问时间
    int fileatime(string
    filename)重回文件最后的走访时间,选用UNIX时间戳格式。

  2. 得到文件的 inode 修改时间
    int filectiome(string filename)

  3. 明确文件的末尾修改时间
    int filemtime(string filename) 再次来到文件的尾声修改时间。

  1四 、fseek();–在文书指针中固定

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

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

offset:偏移量。要运动到文件尾在此以前的义务,须要给 offset 传递3个负值,并设置 whence 为 SEEK_END

whence values are:1、SEEK_SET – 设定地方等于 offset 字节。2、SEEK_CUR – 设定地点为眼下地方加上 offset。2、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);

 


   肆 、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

 


肆 、filetype();–取得文件类型

2.2 读取文件

  1. 把方方面面文件读入三个数组中
    array file(string filename [int use_include_path [, resource
    context]]) 能够将文件读取到数组中,换行符附加在各样成分的终极。
    留意:file()很独特,它不像任何读写函数,它不用建立文件句柄来读取文件内容。

  2. 将全部文件读入1个字符串
    string file_get_contents(string filename [int use_include_path
    [, resource context [, int offset [, int maxlen]]]])
    将文件中的内容读到字符串中。

file_get_contents 还可以用来发送post请求:

$opts = array('http' =>
  array(
    'method'  => 'POST',
    'header'  => "Content-Type: text/xml\r\n".
      "Authorization: Basic ".base64_encode("$https_user:$https_password")."\r\n",
    'content' => $body,
    'timeout' => 60
  )
);

$context  = stream_context_create($opts);
$url = 'https://'.$https_server;
$result = file_get_contents($url, false, $context, -1, 40000);
  1. 从文件指针中读取一行
    string fgets(resource handel [, int length])
    从 handle 指向的文本中读取一行并再次来到长度最多为 length – 1
    字节的字符串。境遇换行符(包涵在重回值中)、EOF 可能曾经读取了
    length – 1 字节后甘休(看先蒙受那一种情景)。即使没有点名
    length,则暗中同意为 1K,也许说 1024 字节。

//逐行读取文件
$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
    while (($buffer = fgets($handle, 4096)) !== false) {
        echo $buffer;
    }
    if (!feof($handle)) {
        echo "Error: unexpected fgets() fail\n";
    }
    fclose($handle);
}
  1. 从文件指针中读取一行并过滤掉 HTML 标记
    string fgetss(resource handle, int length [, string
    allowable_tags])
    和fgets()函数类似,只是它从输入中排除全体HTML和PHP标签。假设要不经意某个标签,就把其放入allowable_tags中。参数
    length 从 PHP 5 起开端可选。

  2. 从文件指针中读取字符
    stirng fgetc(resource handel)

$fp = fopen('somefile.txt', 'r');
if (!$fp) {
    echo 'Could not open file somefile.txt';
}
while (false !== ($char = fgetc($fp))) {
    echo "$char\n";
}
  1. 读取文件
    string fread(resource handle, int length)
    fread不考虑换行符,当读取了length个字节或到达了EOF则截止,它推向读取二进制文件。只要利用filesize()鲜明了应该读取的字符数,就能很方便使用那些函数读取整个文件。
    要是只是想将2个文件的内容读入到二个字符串中,用
    file_get_contents(),它的品质比上面包车型大巴代码好得多。

$handle = fopen("http://www.example.com/", "rb");
$contents = '';
while (!feof($handle)) {
  $contents .= fread($handle, 8192);
}
fclose($handle);
  1. 输出文件
    int readfile(string filename [, int use_include_path])
    读取由filename钦赐的一体文件,马上输出到缓冲区并回到读取的字节数。

$file = 'monkey.gif';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.basename($file).'"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}
//会在客户端弹出一个可下载文件
  1. 据书上说预约义的格式读取文件
    mixed fscanf(resource handle, string format [, string var1])
    遵照预约义的格式解析能源

$handle = fopen("users.txt", "r");
while ($userinfo = fscanf($handle, "%s\t%s\t%s\n")) {
    list ($name, $profession, $countrycode) = $userinfo;
    //... do something with the values
}
fclose($handle);

//users.txt
javier  argonaut        pe
hiroshi sculptor        jp
robert  slacker us
luigi   florist it
  1. 从文件指针中读入一行并分析 CSV 字段
    array fgetcsv(resource handle [, int length [, string delimiter
    [, string enclosure]]])
    省略length或将其设为0都会造成肆意的行长度。能够安装一个比最大行大的数值用来进步品质。

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

$users = file(“/usr/data/s.csv”);
foreach($users as $user){
    list($name, $email, $phone) = explode(‘,’, $user);
    ….
}
//这种方式客观性更强一些。使用fgetcsv()时如果希望遇到换行符停止,那么不能指定长度,否则不可控。
  1. 测试文件指针是还是不是到了文件结束的职位
    bool feof ( resource $handle )
    比方文件指针到了 EOF 也许出错开上下班时间则赶回 TRUE,不然重临叁个错误(蕴含socket 超时),别的情况则赶回 FALSE。

//如果传递的文件指针无效可能会陷入无限循环中,因为 feof() 不会返回 TRUE。
// 如果文件不可读取或者不存在,fopen 函数返回 FALSE
$file = @fopen("no_such_file", "r");

// 来自 fopen 的 FALSE 会发出一条警告信息并在这里陷入无限循环
while (!feof($file)) {
}

fclose($file);
  1. 检查文件或目录是或不是存在
    bool file_exists ( string $filename )

二 、目录函数

  二 、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);

 


options
假使钦点了,将会回去内定成分;它们包罗:PATHINFO_DIRNAME,PATHINFO_BASENAME
和PATHINFO_EXTENSION 或 PATHINFO_FILENAME。假若没有点名 options
暗许是回来全体的单元。 

2.5 读取目录内容

  1. 判定给定文件名是或不是是八个目录
    bool is_dir ( string $filename )

  2. 开辟目录句柄
    resource opendir(string path, [, resource context])

  3. 关门目录句柄
    void closedir(resource directory_handle)

  4. 浅析目录内容
    string readdir(resource dir_handle)
    再次回到目录中下三个文件的文书名。文件名以在文件系统中的排序重临。

  5. 将引得读入数组
    array scandir(string directory [, int sorting_order [, resource
    context]])

  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

 


  1伍 、flock();–轻便的发问文件锁定 

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

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

      operation可以是以下值之一:一 、LOCK_SH取得共享锁定(读取的次第)。贰 、LOCK_EX 取得独占锁定(写入的先后。三 、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);

 


1、is_dir();–判断给定文件名是不是是多个索引

2.4 移动文件指针

  1. 将文件指针移到偏移量钦赐的地点
    int fseek(resource handle, int offset [, int whence])

  2. 赢稳当前线指挥部针的偏移量
    int ftell(resource handle)

  3. 将文件指针移回至文件开端处
    int rewind(resource handle)

$handle = fopen('output.txt', 'r+');

fwrite($handle, 'Really long sentence.');
rewind($handle);
fwrite($handle, 'Foo');
rewind($handle);

echo fread($handle, filesize('output.txt'));

fclose($handle);

//输出
Foolly long sentence.

  贰 、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);

 


  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

 


① 、常用文件函数库

1.1 解析目录路径

  1. 回到路径中的文件名部分
    string basename(string path, [, string suffix])
    设若提供了可选参数suffix,当再次来到的文书名包括这些增添名时将忽略该后缀。

echo "1) ".basename("/etc/sudoers.d", ".d").PHP_EOL;
echo "2) ".basename("/etc/passwd").PHP_EOL;
echo "3) ".basename("/etc/").PHP_EOL;
echo "4) ".basename(".").PHP_EOL;
echo "5) ".basename("/");

//输出
1) sudoers
2) passwd
3) etc
4) .
5) 
  1. 获取路径的目录
    string dirname(string path)
    回来路径的目录部分。

echo "1) " . dirname("/etc/passwd") . PHP_EOL; // 1) /etc
echo "2) " . dirname("/etc/") . PHP_EOL; // 2) / (or \ on Windows)
echo "3) " . dirname("."); // 3) .
  1. 更加多关于路径的音讯
    array pathinfo(string path [, options])
    归来3个提到数组,当中囊括路径的四有的消息:目录名、基本名、扩张名和文件名

$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');

echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['extension'], "\n";
echo $path_parts['filename'], "\n"; // since PHP 5.2.0

//输出
/www/htdocs/inc
lib.inc.php
php
lib.inc
  1. 再次回到规范化的断然路径名
    string realpath(string path)
    将path中的全体符号链接和相对路径引用转换为相应的硬链接和相对路径。
    realpath() 扩展所有的标记连接并且处理输入的 path 中的 ‘/./’, ‘/../’
    以及多余的 ‘/’
    并回到规范化后的断然路径名。重临的门道中尚无标记连接,’/./’ 或
    ‘/../’ 成分
    在 Windows 上,realpath() 会将 unix 风格的路径改成 Windows 风格的。

  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

 


  9、fopen($filepath,$mode) 

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

  参数:filename 如果 filename 是
“scheme://…” 的格式,则被当成1个 URAV4L,PHP
将寻找协议处理器(也被叫作封装协议)来处理此方式。借使该协议没有注册封装协议,PHP
将发生一条音讯来增援检查脚本中潜在的标题并将 filename 当成3个普通的文书名继续执行下去。

    

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");
?>

 


context 参数的评释见手册中的 Streams API 一章。

2.3 将字符串写入文件

int fwrite(resource handle ,string string [, int length])
将字符串的始末输出到钦命的能源中。

//If writing twice to the file pointer, then the data will be appended to the end of the file content:
$fp = fopen('data.txt', 'w');
fwrite($fp, '1');
fwrite($fp, '23');
fclose($fp);

// the content of 'data.txt' is now 123 and not 23!

  四 、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);
}

 

  ④ 、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);
}

 

您可能感兴趣的篇章:

3 执行shell命令

  1. 新建目录
    bool mkdir ( string $pathname [, int $mode = 0777 [, bool
    $recursive = false [, resource $context ]]] )
    暗中同意的 mode 是 0777,意味着最大恐怕的访问权。

  2. 除去目录
    int rmdir(string dirname)
    品味删除 dirname 所钦点的目录。
    该目录必须是空的,而且要有相应的权位。 失利时会发生3个 E_WA奥迪Q7NING
    级别的失实。

  3. 重命名二个文本或目录
    boolean rename(string oldname, string newname [, resource
    context])

rename ("/folder/file.ext", "/folder/newfile.ext");
  1. 设定文件的走访和修改时间
    int touch(string filename [, int time [, int atime]])
    文件不存在将开创空文件

参考文献

  ① 、basename(); — 再次回到路径中的文件名部分。

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

  参数:path1个路子。在 Windows
中,斜线(/)和反斜线(\)都能够看做目录分隔符。在其余环境下是斜线(/

   suffix假定文件名是以 suffix 结束的,那这一某个也会被去掉。

  返回值:返回 path 的着力的文件名。

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

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

 


② 、目录函数

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

2.1 打开和倒闭文件

  1. 打开文件恐怕 U奥迪Q5L
    resource fopen(string resource, string mode [, int
    use_include_path [, resource context]])
    为移植性考虑,强烈提出在用 fopen() 打开文件时连连采用 ‘b’ 标记。

//fopen() 中 mode 的可能值列表

'r' 只读方式打开,将文件指针指向文件头。
'r+'    读写方式打开,将文件指针指向文件头。
'w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'w+'    读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
'a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'a+'    读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
'x' 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。
'x+'    创建并以读写方式打开,其他的行为和 'x' 一样。
'c' Open the file for writing only. If the file does not exist, it is created. If it exists, it is neither truncated (as opposed to 'w'), nor the call to this function fails (as is the case with 'x'). The file pointer is positioned on the beginning of the file. This may be useful if it's desired to get an advisory lock (see flock()) before attempting to modify the file, as using 'w' could truncate the file before the lock was obtained (if truncation is desired, ftruncate() can be used after the lock is requested).
'c+'    Open the file for reading and writing; otherwise it has the same behavior as 'c'.
  1. 闭馆文件
    boolean fclose(resource filehandle)
    filehandle必须是利用fopen()或fsockopen()打开的已存在的文件指针。

  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

  


  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

 


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

1 文件与目录

  六 、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

 


  三 、opendir();–打开目录句柄

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

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

context 参数的求证见手册中的 Streams
API 一章。


$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

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);
        }
    }
}

   ⑩ 、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);
?>

 


壹 、常用文件函数库

1贰 、fgets();–从文件指针中读取一行

  贰 、dirname(); — 重返路径中目录部分

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

  参数:path,3个途径。在 Windows
中,斜线(/)和反斜线(\)都得以看做目录分隔符。在其余环境下是斜线(/)。

  重返值:重回 path 的父目录。 假诺在 path 中向来不斜线,则赶回2个点(’.‘),表示当前目录。不然再次回到的是把path 中最后的 /component(最终二个斜线以及背后部分)去掉之后的字符串。

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

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

 


  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

  


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

  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 :文本指针必须是实惠的,且必须指向2个透过 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);

 


   ⑩ 、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);
?>

 


<?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);
?>

  1⑤ 、flock();–轻便的提问文件锁定 

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

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

      operation能够是以下值之一:壹 、LOCK_SH获得共享锁定(读取的顺序)。贰 、LOCK_EX 取得独占锁定(写入的主次。叁 、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);

 


  ① 、basename(); — 再次来到路径中的文件名部分。

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

  参数:path3个门路。在 Windows
中,斜线(/)和反斜线(\)都能够看作目录分隔符。在任何环境下是斜线(/

   suffix比方文件名是以 suffix 甘休的,那这一片段也会被去掉。

  返回值:返回 path 的为主的文件名。

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

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

 


  

  8、disk_total_space(); –重临1个目录的磁盘总大小

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

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

 


  1④ 、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。2、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);

 


六 、filesize();–取得文件大小

  9、fopen($filepath,$mode) 

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

  参数:filename 如果 filename 是
“scheme://…” 的格式,则被当成多个 UCR-VL,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");
?>

 


  1二 、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);

 


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

   ③ 、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));

 


  8、disk_total_space(); –重回3个目录的磁盘总大小

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

  参数:directory文件系统的目录大概磁盘分区

 


可能的值有 fifo,char,dir,block,link,file 和 unknown。假如出错则赶回
FALSE。假如 stat 调用失利也许文件类型未知的话 filetype() 还会时有产生1个E_NOTICE 消息。

   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."字节";

 


   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."字节";

 


一旦不期望 flock() 在锁定时堵塞,则是 LOCK_NB(Windows 上还不协理)。

  5、fstat()和stat();

  
⑴、fstat()-通过已开辟的公文指针取得文件消息

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

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

    
再次来到值: 再次来到3个数组具有该文件的总计新闻,该数组的格式详细表明于手册中 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);

 


   ③ 、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));

 


1五 、flock();–轻便的咨询文件锁定 

  叁 、opendir();–打开目录句柄

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

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

context 参数的求证见手册中的 Streams
API 一章。


  5、fstat()和stat();

  
⑴、fstat()-通过已开辟的公文指针取得文件消息

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

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

    
重临值: 再次来到1个数组具有该文件的总括新闻,该数组的格式详细表达于手册中 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);

 


5、fstat()和stat();

壹 、常用文件函数库

  1捌 、chown(); — 改变文件的主人

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

  参数:filename:文本路径。“

user:用户名或数字。


 

suffix 假设文件名是以 suffix 甘休的,那这一部分也会被去掉。

   四 、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

 


  贰 、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);

 


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);

mode:私下认可的 mode 是 0777,意味着最大只怕的访问权。有关 mode
的更加多消息请阅读 chmod() 页面。
mkdir(“d:/test/test1”, 0700);

<?php

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

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

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

whence values are:

wouldblock:假诺锁定会杜绝的话(EWOULDBLOCK
错误码境况下),可选的第四个参数会被设置为 TRUE。(Windows 上不支持)

11、file_get_contents();–
将全部文件读入贰个字符串

context:A valid context resource created with
stream_context_create(). 假如您不须求自定义 context,能够用 NULL
来忽略。

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

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);
}

参数: handle
文件系统指针,是出一头地地由 fopen() 创设的 resource(能源)。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图