ホームページ >バックエンド開発 >PHPチュートリアル >ディレクトリとファイルの基本操作 1 (44)

ディレクトリとファイルの基本操作 1 (44)

WBOY
WBOYオリジナル
2016-08-08 09:23:051021ブラウズ

ディレクトリ パスの解決

PHP スクリプトを使用すると、ディレクトリの作成、ディレクトリの移動、ディレクトリの再評価、ディレクトリの削除などのディレクトリ操作が容易になります。
??一般的に使用されるファイル ディレクトリ パスの形式:
??$unixPath="/var/www/html/index.php";
//UNIX システムの絶対パスは「/」で区切る必要があります
??$ winPath= "C:\Appserv\www\index.php";
//Windows システムの絶対パス。デフォルトでは "" で区切られています
??$winPath2="C:/Appserv/www/index.php";
// Windows システムでは、「/」を使用して区切ることもできます。
??絶対パスと相対パスの使用に注意してください。

PHP ファイルパス関連関数

??basename -- パスのファイル名の部分を返します

??構文: string Basename( string path [, string suffix] )
?? file フルパスの文字列。この関数は基本的なファイル名を返します。ファイル名が接尾辞で終わる場合は、この部分も削除されます。
??dirname -- パスのディレクトリ部分を返します
??構文: string dirname(string path)
??ファイルへのフルパスを含む文字列を指定すると、この関数はファイル名を削除した後のディレクトリを返します。
$path= "/home/httpd/html/index.php";
$file=basename($path);// $file値: "index.php"
$file=basename($ path, ".php"); // $file 値: "index "
$file= dirname($path); // $file 値: "/home/httpd/html"
?>

pathinfo--ファイルパス情報を返す
?? 構文: array pathinfo( string path [, intoptions] )
??pathinfo() パス情報を含む連想配列を返します。次の配列単位が含まれます: dirname、basename、および extension。
$path_parts= pathinfo("/www/htdocs/index.html");
echo $path_parts["dirname"] "n"; "] . "n"; //index.html
echo $path_parts["extension"] . "n"; // html
?>
??realpath -- 正規化された絶対パス名を返します
?? 構文: string realpath( string path )
??realpath() は、すべてのシンボリック リンクを展開し、入力パス内の '/./'、'/../'、および冗長な '/' を処理し、正規化された絶対パス名を返します。返されたパスには、シンボリック リンク、「/./」または「/../」コンポーネントはありません。

ディレクトリをトラバースします

opendir -- ディレクトリハンドルを開きます

??構文: resource opendir( string path [, resource context] )
??ディレクトリハンドルを開きます。これは後続のclosedir()、readdir()に使用できます。 ) と rewinddir( ) が呼び出されています。
??readdir--ディレクトリ ハンドルからエントリを読み取ります
??構文: string readdir(resource dir_handle)
??現在のディレクトリ ポインタ位置にあるファイル名を返します。false は返さず、ポインタを 1 ビット下に移動します。ファイル名はファイル システム内の順序で返されます。
??closedir -- ディレクトリ ハンドルを閉じます
??構文: void Closedir(resource dir_handle)
??dir_handle で指定されたディレクトリ ストリームを閉じます。ストリームは、事前に opendir() で開かれている必要があります。
??rewinddir--rewind ディレクトリ ハンドル
??構文: void rewinddir(resource dir_handle)
??dir_handle で指定されたディレクトリ ストリームをディレクトリの先頭にリセットします。

統計ディレクトリ サイズ

??disk_free_space -- ディレクトリ内の利用可能なスペースを返します

??構文: float disc_free_space(string directory)
??ディレクトリを含む文字列を指定すると、この関数は対応するファイル システムまたはディスク パーティションは利用可能なバイト数を返します。
??disk_total_space -- ディレクトリの合計ディスク サイズを返します
??構文: float disc_total_space(string directory)
??ディレクトリを含む文字列を指定すると、この関数は対応するファイル システムまたはディスク パーティションに従って返されます。すべてのバイト。

<?php<span>//</span><span>自定义一个函数dirSize(),统计传入参数的目录大小</span><span>function dirSize($directory) {
$dir_size</span>=<span>0</span>;<span>//</span><span>初值为0,用来累加各文件大小从而计算目录大小</span><span>if</span>($dir_handle=@opendir($directory)){ <span>//</span><span>打开目录并判断成功打开</span><span>while</span>($filename=readdir($dir_handle)) { <span>//</span><span>循环遍历目录</span><span>if</span>($filename!=<span>"</span><span>.</span><span>"</span> && $filename!=<span>"</span><span>..</span><span>"</span>) { <span>//</span><span>排除特殊的目录</span>$subFile=$directory.<span>"</span><span>/</span><span>"</span>.$filename; <span>//</span><span>将文件和目录相连</span><span>if</span>(is_dir($subFile)) <span>//</span><span>如果为目录</span>$dir_size+=dirSize($subFile); <span>//</span><span>求子目录的大小</span><span>if</span>(is_file($subFile)) <span>//</span><span>如果是文件</span>$dir_size+=filesize($subFile); <span>//</span><span>求出文件的大小并累加</span><span>}
}
closedir($dir_handle); </span><span>//</span><span>关闭文件资源</span><span>return</span> $dir_size; <span>//</span><span>返回计算后的目录大小</span><span>}
}
$dir_size</span>=dirSize(<span>"</span><span>phpMyAdmin</span><span>"</span>); <span>//</span><span>调函数计算目录大小,返回目录大小</span>echo round($dir_size/pow(<span>1024</span>,<span>1</span>),<span>2</span>).<span>"</span><span>KB</span><span>"</span>;<span>//</span><span>将目录字节换为&ldquo;KB&rdquo;单位</span>?>

ディレクトリの作成と削除

mkdir--新しいディレクトリ

??構文: boostkdir(string pathname [,intmode])
??pathnameで指定された新しいディレクトリを作成してみます。
??rmdir--ディレクトリの削除
??構文: boolrmdir(string dirname)
??dirname で指定されたディレクトリを削除してみます。ディレクトリは空である必要があり、適切な権限が必要です。成功した場合は TRUE を返し、失敗した場合は FALSE を返します。
??unlink -- ファイルを削除します
??構文: boolunlink (string filename)
??ファイル名を削除します。 Unix C の unlink() 関数に似ています。成功した場合は TRUE、失敗した場合は FALSE を返します

<?php<span>//</span><span>自定义函数递归的删除整个目录</span><span>function delDir($directory) {
</span><span>if</span>(file_exists($directory)) { <span>//</span><span>判断目录是否存在,如果存在则执行</span><span>if</span>($dir_handle=@opendir($directory)){ <span>//</span><span>打开返回目录资源,并判断</span><span>while</span>($filename=readdir($dir_handle)){ <span>//</span><span>遍历目录读出目录中信息</span><span>if</span>($filename!=<span>"</span><span>.</span><span>"</span> && $filename!=<span>"</span><span>..</span><span>"</span>) { <span>//</span><span>一定要排除两个特殊目录</span>$subFile=$directory.<span>"</span><span>/</span><span>"</span>.$filename;<span>//</span><span>将目录下文件和当前目录相连</span><span>if</span>(is_dir($subFile)) <span>//</span><span>如果是目录条件则成立</span>delDir($subFile); <span>//</span><span>递归调用自己删除子目录</span><span>if</span>(is_file($subFile)) <span>//</span><span>如果是文件条件则成立</span>unlink($subFile); <span>//</span><span>直接删除这个文件</span><span>}
}
closedir($dir_handle); </span><span>//</span><span>关闭目录资源</span>rmdir($directory); <span>//</span><span>删除空目录</span><span>}
}
}
delDir(</span><span>"</span><span>phpMyAdmin</span><span>"</span>); <span>//</span><span>调用函数,将程序所在目录中phpMyAdmin文件夹删除</span>?>

ディレクトリをコピーして移動します

copy--ファイルをコピーします

??構文: boolcopy (string source, string dest)
??source から dest にファイルをコピーします。成功した場合は TRUE を返し、失敗した場合は FALSE を返します。
??PHP にはディレクトリのコピーと移動に関連する機能はありません。必要に応じて、機能をカスタマイズするだけです。

ファイルの基本操作

ファイルの開閉

fopen--打开文件或者URL
??语法:resource fopen( string filename, string mode [, booluse_include_path[, resource zcontext]] )
??fopen() 将filename指定的名字资源绑定到一个流上。如果filename是"scheme://..." 的格式,则被当成一个URL,PHP 将搜索协议处理器(也被称为封装协议)来处理此模式。如果该协议尚未注册封装协议,PHP 将发出一条消息来帮助检查脚本中潜在的问题并将filename当成一个普通的文件名继续执行下去。
??mode参数指定了所要求到该流的访问类型。
??如果也需要在include_path中搜寻文件的话,可以将可选的第三个参数use_include_path设为'1' 或TRUE。
??如果打开失败,本函数返回FALSE。
fclose--关闭一个已打开的文件指针

写入文件

fwrite--写入文件(可安全用于二进制文件)
??语法:intfwrite( resource handle, string string[, intlength] )
??fwrite() 把string的内容写入文件指针handle处。如果指定了length,当写入了length个字节或者写完了string以后,写入就会停止,视乎先碰到哪种情况。返回写入的字符数,出现错误时则返回FALSE

读取文件内容

??fread--读取文件(可安全用于二进制文件)
??string fread( inthandle, intlength )
??fread() 从文件指针handle读取最多length个字节。该函数在读取完length个字节数,或到达EOF 的时候,或(对于网络流)当一个包可用时就会停止读取文件,视乎先碰到哪种情况。

<?<span>php
$handle </span>= fopen(<span>"</span><span>http://www.example.com/</span><span>"</span>, <span>"</span><span>rb</span><span>"</span><span>);
$contents </span>= <span>""</span><span>;
</span><span>while</span> (!<span>feof($handle)) {
$contents .</span>= fread($handle, <span>8192</span><span>);
}
fclose($handle);
</span>?>

fgets--从文件指针中读取一行
??语法:string fgets( inthandle [,intlength])
??从handle指向的文件中读取一行并返回长度最多为length-1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了length -1 字节后停止(看先碰到那一种情况)。如果没有指定length,则默认为1K,或者说1024 字节。
??fgetc--从文件指针中读取字符
??语法:string fgetc( resource handle )
??返回一个包含有一个字符的字符串,该字符从handle指向的文件中得到。碰到EOF 则返回FALSE。

file--把整个文件读入一个数组中
??语法:array file ( string filename [, intuse_include_path[, resource context]] )
??和readfile()一样,只除了file() 将文件作为一个数组返回。数组中的每个单元都是文件中相应的一行,包括换行符在内。如果失败file() 返回FALSE。
??readfile--输出一个文件
??语法:intreadfile( string filename [, booluse_include_path[, resource context]] )
??读入一个文件并写入到输出缓冲。
??返回从文件中读入的字节数。如果出错返回FALSE 并且除非是以@readfile() 形式调用,否则会显示错误信息。

以上就介绍了目录与文件的基本操作一 (44),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

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