ホームページ  >  記事  >  バックエンド開発  >  第6章 PHPのディレクトリとファイル操作_PHPチュートリアル

第6章 PHPのディレクトリとファイル操作_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:21:51761ブラウズ

1つ。ディレクトリ操作
basename -- パスのファイル名部分を返します
dirname -- パスのディレクトリ部分を返します
pathinfo -- ファイルパス情報を返します
realpath -- 正規化された絶対パス名を返します

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

$path = 'demo1.php';
echobasename($path);
echo '
;
echo ディレクトリ名 ($path);
$array_path = pathinfo($path);
echo 'basename : '.$array_path['basename']';
echo 'ディレクトリ名 : '.$array_path['dirname'].'
';
echo '拡張子 : '.$array_path['extension'].'
';
echo 'ファイル名 : ' .$array_path[ 'FILENAME']. '& LT; ASIC6 tExtent: PHP
ファイル名: Demo1
2.ディスク、ディレクトリ、ファイル数
1. ファイル サイズとディスク容量を表示します
filesize -- ファイル サイズを取得します
disk_free_space -- ディレクトリ内の使用可能な容量を返します
disk_total_space -- ディレクトリの合計ディスク サイズを返します



コードをコピーします

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


$path ='demo2.php';
$path = realpath($path);
$drive = 'c:';ファイルサイズ($path)/ 1024,2).'kb'.'
';
echoround(disk_free_space($drive)/1024/1024/1024,2).'GB'.'< br/>';
echoround(disk_total_space($drive)/1024/1024/1024,2).'GB'.'
> 出力 0.26kb 10.61GB
30.01GB

2. ファイルのさまざまな時刻を取得します
fileatime -- ファイルの最終アクセス時刻を取得します
filectime -- ファイルの i ノード変更時刻を取得します
filemtime -- ファイルの変更時刻を取得します



コードをコピーします

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


$file = realpath ( '../Basic5/demo3.php' );
$date_format = 'Y-m-d h:i:s' ;
echo '最終アクセス時刻 : '.date ( $date_format , fileatime ( $file ) ) '
';
echo '最終変更時刻 : '.date ( $date_format , filectime ( $file ) ) 。 '
';
echo '最後の変更時刻: '.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);


私の名前はアンリンですは 29 です。
fgetss -- ファイル ポインタから 一行読み込んで HTML タグを除外します


コードをコピーします

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

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

出力
私の名前はアンリンですファイルを読み取ります (バイナリ ファイルには安全です)



コードをコピーします

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

$filename = 'file1.txt'
$fp = fopen($filename,'; r');
$contents = fread($fp,filesize($ filename));
fclose($fp);
私の名前は 29 です. fpassthru -- ファイル ポインターに残っているすべてのデータを出力します

コードをコピーします

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


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


私の名前は 29 です。 33
file -- ファイル全体を配列に読み込みます
コードをコピーします
コードは次のとおりです。


$lines = file('file1.txt');
foreach ($)行を $line_num =>
{
echo $line_num.'
'
}

output
0 : 私の名前はアンリンです。 1 : 私の年齢は 29 です。
readfile -- ファイルを出力します
コードをコピーします コードは次のとおりです:

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


出力
私の名前はanllin、私の年齢は29.33です
file_get_contents -- ファイル全体を文字列に読み込みます (php5.0の新機能)


コードをコピーします

$contents = file_get_contents('file1.txt'); output
私の名前はアンリン、年齢は 29 です。 -- ファイル ポインターがファイルの末尾に到達したかどうかをテストします



コードをコピーします

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


$fp = fopen('file1.txt','r' );
while(!feof($fp))
{ echo fgetc($fp); output ; 私の名前はアンリン、年齢は 29 です。
file_exists -- ファイルまたはディレクトリが存在するかどうかを確認します



コードをコピーします

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



$filename = 'file1.txt';
if(file_exists($filename)) { echo 'ファイル読み取り書き込み操作を実行'; } else
{
echo '探しているファイルは存在しません';
?>


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


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


$file_size = filesize('file1.txt');
echo $file_size ;
output
33
unlink -- 删除文件
复制代码 代码如下:

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

output
1
rewind -- 倒回文件指针的位置
ftell -- 返回文件指针读/写的位置
fseek -- 在文件指针中定位
复制代码 代码如下:

$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 -- 軽量のコンサルテーション ファイル ロック
コードをコピー コードは次のとおりです:

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


コードをコピーします

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


$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 .'
';
} ?> 出力
..
.buildpath
.settings
demo1.php
demo11.php
デモ12.php
デモ13 .php
demo14.php
demo15.php
demo16.php
demo17.php
demo18.php
demo2.php
demo20.php
demo21.php
demo3.php
demo4.php
demo5.php
demo6.php
デモ7.php
demo8.php
demo9.php
file1.txt
file2.txt
rename -- ファイルまたはディレクトリの名前を変更します



コードをコピーします

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


rename('demo1.php ','demo01.php');
if(file_exists('demo01.php'))
{
echo 'ファイル名変更成功'
}
else
{
echo 'ファイル名の変更に失敗しました';
} ?> ; 出力
ファイルの名前変更が成功しました



コードをコピーします

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


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


http://www.bkjia.com/PHPjc/324803.htmlwww.bkjia.comtru​​e
http://www.bkjia.com/PHPjc/324803.html

技術記事

1つ。ディレクトリ操作basename -- パスのファイル名部分を返します dirname -- パスのディレクトリ部分を返します pathinfo -- ファイル パスに関する情報を返します realpath -- 正規化された絶対パスを返します...





声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。