ホームページ > php教程 > php手册 > 第 6 章 PHP のディレクトリとファイルの操作

第 6 章 PHP のディレクトリとファイルの操作

WBOY
リリース: 2016-06-13 12:03:08
オリジナル
780 人が閲覧しました

一.目录操作
basename -- 返回路径中的文件名部分
dirname -- 返回路径中的目录部分
pathinfo -- 返回文件路径的信息
realpath -- 返回规范化的绝对路径名

复制代码 代码如下:


$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 -- 返回一个目录的磁盘总大小

复制代码 代码如下:


$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 -- 取得文件修改时间

复制代码 代码如下:


$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 以及以后的版本所支持,仅能用于本地文件。

复制代码 代码如下:


$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 -- 将一个字符串写入文件

复制代码 代码如下:


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 の内容は次のとおりです:
私の名前は anllin、
私の年齢は 29 です。
fgetc -- ファイル ポインタから文字を読み取ります
Demo.php

コードをコピー コードは次のとおりです:


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


出力:
my

fgets -- ファイル ポインタから 1 行読み取ります



コードをコピーします

コードは次のとおりです: $fp = fopen('file1.txt','r');

echo fgets($fp); fclose($fp);
?


出力
私の名前は anllin、年齢は 29 です。
fgetss -- ファイル ポインタから 1 行を読み取ります。 out HTML タグ



コードをコピー

コードは次のとおりです:

$fp = fopen( 'file3.txt','w'); $outStr = "私の名前は anllin";

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

fclose($fp);
$ ftp = fopen('file3.txt','r');
fclose($ftp); ?>


出力
my name is anllin
fread -- ファイルを読み取ります (バイナリ ファイルに対して安全です)


コードをコピーします

コードは次のとおりです:

$filename = 'file1.txt'; $fp = fopen($filename,'r') ; $contents = fread($fp,filesize ($filename)); fclose($fp)>

my name is anllin, my age is 29 を出力します。
fpassthru -- ファイル ポインターにある残りのデータをすべて出力します



コードをコピーします



$filename = 'file1.txt';
$fp = fopen($filename,'rb'); = fpassthru($fp);
fclose($fp)

出力 私の名前はアンリンです29. 33 file -- ファイル全体を配列に読み込みます In

コードをコピー

コードは次のとおりです:


$lines = file('file1.txt' );
foreach ($lines as $line_num => $line)
{

echo $line_num.' '.$line.'
';
}
?>

出力 0 : 私の名前はアンリンです、 1 : 私の年齢は29. readfile -- ファイルを出力します


コードをコピー

コードは次のとおりです:


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

?>


私の名前はアンリン、年齢は 29.33 歳です
file_get_contents -- ファイル全体を文字列に読み取ります (php5.0 の新機能)

コードをコピー コードは次のとおりです:


$contents = file_get_contents('file1.txt');
echo
?>


私の名前はアンリン、年齢は 29 です。
feof -- ファイル ポインタがファイルの終わりに到達したかどうかをテストします。 場所

コードをコピー コード

$fp = fopen('file1.txt' ,'r');
while(!feof($fp))
{
echo fgetc($fp);
}

fclose($fp);> ;


私の名前はアンリンです年齢は 29 歳です。
file_exists -- ファイルまたはディレクトリが存在するかどうかを確認します

コードをコピー

コードは次のとおりです:




$filename = 'file1.txt'; 🎜>if(file_exists($filename))
{
echo 'ファイルの読み取りおよび書き込み操作を実行します';
}
else
{

echo '探しているファイル存在しません';
}
?>

出力 ファイルの読み取りおよび書き込み操作を実行しますfilesize -- ファイル サイズを取得します

コードをコピー

コードは次のとおりです。


$file_size = filesize(' file1.txt'); >echo $file_size;
?>


出力
33
リンク解除 -- ファイルを削除



コードをコピーします

コードは次のとおりです:


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

output
1
rewind -- ファイル ポインタの位置を巻き戻します。
ftell -- ファイル ポインタの読み取り/書き込み位置を返します。
fseek -- ファイル ポインタ内の位置

コードをコピー コードは次のとおりです。

$fp = fopen ( 'file1.txt', 'r' );
fgetc ( $fp );
echo ftell ( $fp ) ;
rewind ( $fp ); $fp ) ;
fgetc ( $fp );
echo ftell ( $fp ); ($fp,0) ;//巻き戻し ($fp)
echo ftell ( $fp ) '
?> と同じ。 🎜>2
0
2
0
フロックの操作値

flock -- 軽量の相談ファイルのロック




コードをコピー

コードは次のとおりです:

操作值

意义

LOCK_SH(以前为1)

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

LOCK_EX(以前为2)

写操作锁定。这是互斥的,该文件不能被共享

LOCK_UN(以前为3)

释放已有的锁定

LOCK_NB(以前为4)

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

$filename = 'file1.txt';

$fp = fopen($filename,'rb'); flock($fp,LOCK_EX);//ロックされた $contents = fread($ fp, filesize($filename)); flock($fp,LOCK_UN);// ロック解除 fclose($fp); >

出力

私の名前は anllin、年齢は 29 です。
ディレクトリ ハンドル操作
opendir -- ディレクトリ ハンドルを開きます
readdir -- ディレクトリ ハンドルからエントリを読み取ります
closedir --ディレクトリハンドルを閉じます



コードをコピー

コードは次のとおりです:



$dir= opendir ('.. /Basic6');
while(!!$file = readdir($dir))
{
echo $file.'
';
🎜>closedir( $dir);

?> . ..

.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 -- 指定されたパス内のファイルとディレクトリをリストします



コードをコピーします

コードは次のとおりです。


$files = scandir('../Basic6'); 🎜>foreach($files as $file)
{
echo $file.'
}
?>

output ...buildpath .project

.settings

demo1.php
demo10.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 'ファイル名変更成功';
}
else
{
echo 'ファイル名変更失敗';

出力 <🎜; >ファイル名の変更が成功しました rmdir -- ディレクトリを削除します

コードをコピー

コードは次のとおりです:


rmdir('123');
if(file_exists('123'))
{
echo 'ファイルの削除に失敗しました'
}
{
echo 'ファイルの削除に成功しました';

}
?>


ファイルの削除に成功しました

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート