第六章 php目录与文件 *** 作_PHP教程

第六章 php目录与文件 *** 作_PHP教程,第1张

一.目录 *** 作

basename -- 返回路径中的文件名部分

dirname -- 返回路径中的目录部分

pathinfo -- 返回文件路径的信息

realpath -- 返回规范化的绝对路径名

复制代码 代码如下:


<?php

$path = 'demo1.php';

$path = realpath($path);

echo basename($path);

echo '

';

echo dirname($path);

echo '

';

$array_path = pathinfo($path);

echo 'basename : '.$array_path['basename'].'

';

echo 'dirname : '.$array_path['dirname'].'

';

echo 'extension : '.$array_path['extension'].'

';

echo 'filename : '.$array_path['filename'].'

';

?>


Output:

demo1.php

D:AppServwwwBasic6

basename : demo1.php

dirname : D:AppServwwwBasic6

extension : php

filename : demo1


二.磁盘、目录和文件计数

1.查看文件大小和磁盘空间

filesize -- 取得文件大小

disk_free_space -- 返回目录中的可用空间

disk_total_space -- 返回一个目录的磁盘总大小

复制代码 代码如下:


<?php

$path ='demo2.php';

$path = realpath($path);

$drive = 'c:';

echo round(filesize($path)/1024,2).'kb'.'

';

echo round(disk_free_space($drive)/1024/1024/1024,2).'GB'.'

';

echo round(disk_total_space($drive)/1024/1024/1024,2).'GB'.'

';

?>


output

0.26kb

10.61GB

30.01GB


2.获得文件的各种时间

fileatime -- 取得文件的上次访问时间

filectime -- 取得文件的 inode 修改时间

filemtime -- 取得文件修改时间

复制代码 代码如下:


<?php

$file = realpath ( '../Basic5/demo3.php' );

$date_format = 'Y-m-d h:i:s';

echo 'lastest accessing time : '.date ( $date_format, fileatime ( $file ) ) . '

';

echo 'lastest change time : '.date ( $date_format, filectime ( $file ) ) . '

';

echo 'lastest modify time : '.date ( $date_format, filemtime ( $file ) ) . '

';

?>


output

lastest accessing time : 2011-12-18 04:26:49

lastest change time : 2011-12-18 04:26:49

lastest modify time : 2011-12-18 04:29:15


三.文件处理

文件读写的两种方式:

1.php所有版本都支持的方法:

fopen -- 打开文件或者 URL

fclose -- 关闭一个已打开的文件指针

fwrite -- 写入文件(可安全用于二进制文件)

表 1. fopen() 中 mode 的可能值列表

mode

说明

'r'

只读方式打开,将文件指针指向文件头。


'r+'

读写方式打开,将文件指针指向文件头。


'w'

写入方式打开,将文件指针指向文件头并将文件大小截为零。


如果文件不存在则尝试创建之。


'w+'

读写方式打开,将文件指针指向文件头并将文件大小截为零。


如果文件不存在则尝试创建之。


'a'

写入方式打开,将文件指针指向文件末尾。


如果文件不存在则尝试创建之。


'a+'

读写方式打开,将文件指针指向文件末尾。


如果文件不存在则尝试创建之。


'x'

创建并以写入方式打开,将文件指针指向文件头。


如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。


如果文件不存在则尝试创建之。


这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。


此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。


'x+'

创建并以读写方式打开,将文件指针指向文件头。


如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。


如果文件不存在则尝试创建之。


这和给 底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。


此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。


复制代码 代码如下:


<?php

$fp = fopen('file1.txt','w');

$outStr = "my name is anllin,rnmy age is 29.";

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

fclose($fp);

?>


output

my name is anllin,

my age is 29.

2.php5新加入的方法

file_put_contents -- 将一个字符串写入文件

复制代码 代码如下:


<?php

file_put_contents('file2.txt',"my name is anllin,rnmy age is 29.");

?>


output

my name is anllin,

my age is 29.

读出文件内容的方法:

函数

功能

Fgetc()

读出一个字符,并将指针移到下一个字符

Fgets()

读出一行字符,可以指定一行显示的长度。


Fgetss()

从文件指针中读取一行并过滤掉HTML标记

Fread()

读取定量的字符

Fpassthru()

输出文件到指定处的所有剩余数据

File()

将整个文件读入数组中,以行分组

Readfile()

读入一个文件并写入到输出缓冲

File_get_contents()

将整个文件读入一个字符串

Feof()

判断读完文件函数

File_exists()

查看文件是否存在

示例文件file1.txt的内容如下:

my name is anllin,

my age is 29.

fgetc -- 从文件指针中读取字符

Demo.php

复制代码 代码如下:


<?php

$fp = fopen('file1.txt','r');

echo fgetc($fp);

echo fgetc($fp);

fclose($fp);

?>


Output:

my

fgets -- 从文件指针中读取一行

复制代码 代码如下:


<?php

$fp = fopen('file1.txt','r');

echo fgets($fp);

echo fgets($fp);

fclose($fp);

?>


output

my name is anllin, my age is 29.

fgetss -- 从文件指针中读取一行并过滤掉 HTML 标记

复制代码 代码如下:


<?php

$fp = fopen('file3.txt','w');

$outStr = "my name is anllin";

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

fclose($fp);

$ftp = fopen('file3.txt','r');

echo fgetss($ftp);

fclose($ftp);

?>


Output

my name is anllin

fread -- 读取文件(可安全用于二进制文件)

复制代码 代码如下:


<?php

$filename = 'file1.txt';

$fp = fopen($filename,'r');

$contents = fread($fp,filesize($filename));

echo $contents;

fclose($fp);

?>


Output

my name is anllin, my age is 29.

fpassthru -- 输出文件指针处的所有剩余数据

复制代码 代码如下:


<?php

$filename = 'file1.txt';

$fp = fopen($filename,'rb');

$leftSize = fpassthru($fp);

echo $leftSize;

fclose($fp);

?>


output

my name is anllin, my age is 29. 33

file -- 把整个文件读入一个数组中

复制代码 代码如下:


<?php

$lines = file('file1.txt');

foreach ($lines as $line_num => $line)

{

echo $line_num.' : '.$line.'

';

}

?>


output

0 : my name is anllin,

1 : my age is 29.

readfile -- 输出一个文件

复制代码 代码如下:


<?php

$size = readfile('file1.txt');

echo $size;

?>


output

my name is anllin, my age is 29.33

file_get_contents -- 将整个文件读入一个字符串(php5.0新增)

复制代码 代码如下:


<?php

$contents = file_get_contents('file1.txt');

echo $contents;

?>


output

my name is anllin, my age is 29.

feof -- 测试文件指针是否到了文件结束的位置

复制代码 代码如下:


<?php

$fp = fopen('file1.txt','r');

while(!feof($fp))

{

echo fgetc($fp);

}

fclose($fp);

?>


output

my name is anllin, my age is 29.

file_exists -- 检查文件或目录是否存在

复制代码 代码如下:



<?php

$filename = 'file1.txt';

if(file_exists($filename))

{

echo '执行文件读写 *** 作';

}

else

{

echo '你要找的文件不存在';

}

?>


output

执行文件读写 *** 作

filesize -- 取得文件大小

复制代码 代码如下:


<?php

$file_size = filesize('file1.txt');

echo $file_size;

?>


output

33

unlink -- 删除文件

复制代码 代码如下:


<?php

$isDeleted = unlink('file3.txt');

echo $isDeleted;

?>


output

1

rewind -- 倒回文件指针的位置

ftell -- 返回文件指针读/写的位置

fseek -- 在文件指针中定位

复制代码 代码如下:


<?php

$fp = fopen ( 'file1.txt', 'r' );

fgetc ( $fp );

fgetc ( $fp );

echo ftell ( $fp ) . '

';

rewind ( $fp );

echo ftell ( $fp ) . '

';

fgetc ( $fp );

fgetc ( $fp );

echo ftell ( $fp ) . '

';

fseek($fp,0);//same as rewind ($fp)

echo ftell ( $fp ) . '

';

?>


output

2

0

2

0

Flock的 *** 作值

*** 作值

意义

LOCK_SH(以前为1)

读写锁定。


这意味着文件可以共享,其他人可以读该文件

LOCK_EX(以前为2)

写 *** 作锁定。


这是互斥的,该文件不能被共享

LOCK_UN(以前为3)

释放已有的锁定

LOCK_NB(以前为4)

防止在请求加锁时发生阻塞

flock -- 轻便的咨询文件锁定

复制代码 代码如下:


<?php

$filename = 'file1.txt';

$fp = fopen($filename,'rb');

flock($fp,LOCK_EX);//locked

$contents = fread($fp,filesize($filename));

flock($fp,LOCK_UN);//unlocked

echo $contents;

fclose($fp);

?>


output

my name is anllin, my age is 29.

目录句柄 *** 作

opendir -- 打开目录句柄

readdir -- 从目录句柄中读取条目

closedir -- 关闭目录句柄

复制代码 代码如下:


<?php

$dir= opendir('../Basic6');

while(!!$file = readdir($dir))

{

echo $file.'

';

}

closedir($dir);

?>


output

.

..

.buildpath

.project

.settings

demo1.php

demo10.php

demo11.php

demo12.php

demo13.php

demo14.php

demo15.php

demo16.php

demo17.php

demo18.php

demo19.php

demo2.php

demo20.php

demo3.php

demo4.php

demo5.php

demo6.php

demo7.php

demo8.php

demo9.php

file1.txt

file2.txt

scandir -- 列出指定路径中的文件和目录

复制代码 代码如下:


<?php

$files = scandir('../Basic6');

foreach($files as $file)

{

echo $file.'

';

}

?>


output

.

..

.buildpath

.project

.settings

demo1.php

demo10.php

demo11.php

demo12.php

demo13.php

demo14.php

demo15.php

demo16.php

demo17.php

demo18.php

demo19.php

demo2.php

demo20.php

demo21.php

demo3.php

demo4.php

demo5.php

demo6.php

demo7.php

demo8.php

demo9.php

file1.txt

file2.txt

rename -- 重命名一个文件或目录

复制代码 代码如下:


<?php

rename('demo1.php','demo01.php');

if(file_exists('demo01.php'))

{

echo 'file rename success';

}

else

{

echo 'file rename fail';

}

?>


output

file rename success

rmdir -- 删除目录

复制代码 代码如下:


<?php

rmdir('123');

if(file_exists('123'))

{

echo 'delete file fail';

}

{

echo 'delete file success';

}

?>


output

delete file success

http://www.bkjia.com/PHPjc/324803.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/324803.htmlTechArticle一.目录 *** 作 basename -- 返回路径中的文件名部分 dirname -- 返回路径中的目录部分 pathinfo -- 返回文件路径的信息 realpath -- 返回规范化的绝对...

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/473296.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018-06-01
下一篇 2018-06-01

发表评论

登录后才能评论

评论列表(0条)

保存