第六章 php目录与文件操作

前端之家收集整理的这篇文章主要介绍了第六章 php目录与文件操作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一.目录操作
basename -- 返回路径中的文件名部分
dirname -- 返回路径中的目录部分
pathinfo -- 返回文件路径的信息
realpath -- 返回规范化的绝对路径
<div class="codetitle"><a style="CURSOR: pointer" data="76600" class="copybut" id="copybut76600" onclick="doCopy('code76600')"> 代码如下:

<div class="codebody" id="code76600">
<?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:\AppServ\www\Basic6
basename : demo1.PHP
dirname : D:\AppServ\www\Basic6
extension : PHP
filename : demo1 二.磁盘、目录和文件计数
1.查看文件大小和磁盘空间
filesize -- 取得文件大小
disk_free_space -- 返回目录中的可用空间
disk_total_space -- 返回一个目录的磁盘总大小
<div class="codetitle"><a style="CURSOR: pointer" data="68314" class="copybut" id="copybut68314" onclick="doCopy('code68314')"> 代码如下:
<div class="codebody" id="code68314">
<?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 -- 取得文件修改时间
<div class="codetitle"><a style="CURSOR: pointer" data="46288" class="copybut" id="copybut46288" onclick="doCopy('code46288')"> 代码如下:
<div class="codebody" id="code46288">
<?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,\r\nmy 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,\r\nmy 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,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 -- 测试文件指针是否到了文件结束的位置
@L_404_13@ 代码如下:
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 -- 检查文件或目录是否存在
代码如下:
<Meta http-equiv="content-type" content="text/html;charset=utf-8"/>
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 -- 重命名一个文件或目录
代码如下:
4041">
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
文件目录

猜你在找的PHP相关文章