php文件夹操作函数
string basename ( string path [, string suffix] )
给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名。如果文件名是以 suffix 结束的,那这一部分也会被去掉。
在 Windows 中,斜线(/)和反斜线()都可以用作目录分隔符。在其它环境下是斜线(/)。
string dirname ( string path )
给出一个包含有指向一个文件的全路径的字符串,本函数返回去掉文件名后的目录名。
在 Windows 中,斜线(/)和反斜线()都可以用作目录分隔符。在其它环境下是斜线(/)。
array pathinfo ( string path [, int options] )
pathinfo() 返回一个联合数组包含有 path 的信息。包括以下的数组单元:dirname,basename 和 extension。
可以通过参数 options 指定要返回哪些单元。它们包括:PATHINFO_DIRNAME,PATHINFO_BASENAME 和 PATHINFO_EXTENSION。默认是返回全部的单元。
string realpath ( string path )
realpath() 扩展所有的符号连接并且处理输入的 path 中的 ‘/./', ‘/../' 以及多余的 ‘/' 并返回规范化后的绝对路径名。返回的路径中没有符号连接,'/./' 或 ‘/../' 成分。
realpath() 失败时返回 FALSE,比如说文件不存在的话。在 BSD 系统上,如果仅仅是 path 不存在的话,PHP 并不会像其它系统那样返回 FALSE。
bool is_dir ( string filename )
如果文件名存在并且为目录则返回 TRUE。如果 filename 是一个相对路径,则按照当前工作目录检查其相对路径。
注: 本函数的结果会被缓存。更多信息参见 clearstatcache()。
resource opendir ( string path [, resource context] )
打开一个目录句柄,可用于之后的 closedir(),readdir() 和 rewinddir() 调用中。
string readdir ( resource dir_handle )
返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。
void closedir ( resource dir_handle )
关闭由 dir_handle 指定的目录流。流必须之前被 opendir() 所打开。
void rewinddir ( resource dir_handle )
将 dir_handle 指定的目录流重置到目录的开头。
array glob ( string pattern [, int flags] )
glob() 函数依照 libc glob() 函数使用的规则寻找所有与 pattern 匹配的文件路径,类似于一般 shells 所用的规则一样。不进行缩写扩展或参数替代。
返回一个包含有匹配文件/目录的数组。如果出错返回 FALSE。
有效标记为:
GLOB_MARK - 在每个返回的项目中加一个斜线
GLOB_NOSORT - 按照文件在目录中出现的原始顺序返回(不排序)
GLOB_NOCHECK - 如果没有文件匹配则返回用于搜索的模式
GLOB_NOESCAPE - 反斜线不转义元字符
GLOB_BRACE - 扩充 {a,b,c} 来匹配 ‘a','b' 或 ‘c'
GLOB_ONLYDIR - 仅返回与模式匹配的目录项
注: 在 PHP 4.3.3 版本之前 GLOB_ONLYDIR 在 Windows 或者其它不使用 GNU C 库的系统上不可用。
GLOB_ERR - 停止并读取错误信息(比如说不可读的目录),默认的情况下忽略所有错误
注: GLOB_ERR 是 PHP 5.1 添加的。
php文件目录操作
新建文件
1、先确定要写入文件的内容
$content = '你好';
2、打开这个文件(系统会自动建立这个空文件)
//假设新建的文件叫file.txt,而且在上级目录下。w表示‘写文件',$fp下面要用到,表示指向某个打开的文件。
$fp = fopen('../file.txt', 'w');
3、将内容字符串写入文件
//$fp告诉系统要写入的文件,写入的内容是$content
fwrite($fp, $content);
4、关闭文件
fclose($fp);
说明:PHP5中提供了更方便的函数file_put_contents,上面的4步可以这样完成:
$content = '你好';
file_put_contents('file.txt',$content);
删除文件
//删除当前目录下的arch目录下的文件abc.txt
unlink('arch/abc.txt');
说明:系统会返回操作结果,成功则返回 TRUE,失败则返回 FALSE,可以用变量接收,就知道是否删除成功:
$deleteResult = unlink('arch/abc.txt');
获取文件内容
//假设获取的目标文件名是file.txt,而且在上级目录下。获取的内容放入$content。
$content = file_get_contents('../file.txt');
修改文件内容
操作方法与新建内容基本一样
ファイルまたはディレクトリの名前を変更します
//現在のディレクトリのサブディレクトリ a にあるファイル 1.gif の名前を 2.gif に変更します。
rename('/a/1.gif', '/a/2.gif');
注: ディレクトリについても同じことが当てはまります。システムは操作結果を返します。成功した場合は TRUE、失敗した場合は FALSE を受け取り、名前の変更が成功したかどうかを知ることができます。
$renameResult = rename('/a/1.gif', '/a/2.gif');
ファイルまたはディレクトリを移動する場合は、名前を変更したパスを新しいパスに設定するだけです。以上です:
//現在のディレクトリのサブディレクトリ a にあるファイル 1.gif を現在のディレクトリのサブディレクトリ b に移動し、名前を 2.gif に変更します。
rename('/a/1.gif', '/b/2.gif');
ただし、ディレクトリ b が存在しない場合、移動は失敗することに注意してください。
ファイルのコピー
//現在のディレクトリのサブディレクトリ a にあるファイル 1.gif を現在のディレクトリのサブディレクトリ b にコピーし、2.gif という名前を付けます。
copy('/a/1.gif', '/b/1.gif');
注: この操作はディレクトリに対して実行できません。
ターゲット ファイル (上記の /b/1.gif) が既に存在する場合、元のファイルは上書きされます。
システムは操作結果を返します。成功した場合は TRUE、失敗した場合は FALSE を受け取り、コピーが成功したかどうかを知ることができます。
$copyResult = copy('/a/1.gif', '/b/1.gif');
ファイルやディレクトリの移動
操作方法は名前変更と同じです
ファイルまたはディレクトリが存在するかどうか
//上位ディレクトリにlogo.jpgというファイルが存在するか確認します。
$existResult = file_exists('../logo.jpg');
説明: ファイルが存在する場合、システムは true を返し、存在しない場合は false を返します。ディレクトリに対しても同様の操作が可能です。
ファイルサイズの取得
//上位ディレクトリにあるlogo.pngファイルのサイズを取得します。
$size = filesize('../logo.png');
説明: システムはファイルのサイズをバイト単位で示す数値を返します。
新しいディレクトリ
//現在のディレクトリのディレクトリ a の下に新しいディレクトリ b を作成します。
mkdir('/a/b');
説明: システムは、成功した場合は操作結果を TRUE、失敗した場合は FALSE を返し、新しい作成が成功したかどうかを知るために変数を使用できます。 :
$mkResult = mkdir('/a/b');
ディレクトリの削除
//現在のディレクトリのディレクトリ a の下にあるサブディレクトリ b を削除します。
rmdir('/a/b');
注: 空でないディレクトリのみを削除できます。それ以外の場合は、最初にディレクトリ内のサブディレクトリとファイルを削除し、次にディレクトリ全体を削除する必要があります。
システム操作結果を返します。成功した場合は TRUE を返し、失敗した場合は FALSE を返します。変数を使用して削除が成功したかどうかを知ることができます:
$deleteResult = rmdir('/a/b');
ディレクトリ内のすべてのファイル名を取得します
1. まず、操作対象のディレクトリを開き、そこに変数を指定します
//現在のディレクトリ内のディレクトリ pic の下にあるサブディレクトリ common を開きます。
$handler = opendir('pic/common');
2. ディレクトリ内のすべてのファイルを読み取るループ
/* ここで、$filename = readdir($handler) は、読み取られたファイル名が割り当てられます。無限ループに陥らないようにするには、$filename !== false も必要です。必ず !== を使用してください。ファイル名が '0' と呼ばれる場合、またはシステムによって何かが false とみなされる場合、 != を使用するとループが停止します */
while( ($filename = readdir($ handler) )) !== false ) {
3. ディレクトリには '.' と '..' という名前の 2 つのファイルがありますが、それらを操作しないでください
if($filename != "." && $ filename != "..") {
4. プロセス
//ここでは単に echo を使用してファイル名を出力します
echo $filename;
}
}
5.ディレクトリ
closedir($handler);
オブジェクトがディレクトリであるかどうか
//上位ディレクトリにある対象オブジェクト logo.jpg がディレクトリであるかどうかを確認します。
$checkResult = is_dir('../logo.jpg');
説明: ターゲット オブジェクトがディレクトリ システムの場合は true を返し、それ以外の場合は false を返します。もちろん、上記の例の $checkResult は false です。
オブジェクトがファイルかどうか
//上位ディレクトリにある対象オブジェクト logo.jpg がファイルかどうかを確認します。
$checkResult = is_file('../logo.jpg');
注: ターゲット オブジェクトがファイルの場合、システムは true を返し、それ以外の場合は false を返します。もちろん、上記の例の $checkResult は true です。