ホームページ  >  記事  >  バックエンド開発  >  (上級)PHPのフォルダー・ファイルディレクトリ操作機能の紹介

(上級)PHPのフォルダー・ファイルディレクトリ操作機能の紹介

黄舟
黄舟オリジナル
2017-02-07 09:49:521548ブラウズ

次のテキスト:

php フォルダー操作関数

string basename ( string path [, string suffix] )

はファイルへの完全なパスを含む文字列を与え、この関数は基本的なファイル名を返します。ファイル名が接尾辞で終わる場合、この部分も削除されます。
Windows では、スラッシュ (/) とバックスラッシュ () の両方をディレクトリ区切り文字として使用できます。他の状況では、スラッシュ (/) になります。

string dirname ( string path )

ファイルへのフルパスを含む文字列を指定すると、この関数はファイル名を削除した後のディレクトリ名を返します。
Windows では、スラッシュ (/) とバックスラッシュ () の両方をディレクトリ区切り文字として使用できます。他の状況では、スラッシュ (/) になります。

array pathinfo ( string path [, int options] )

pathinfo() は、パス情報を含む連想配列を返します。次の配列要素が含まれます: dirname、basename、および extension。
パラメータオプションを通じてどの単位を返すかを指定できます。これらには、PATHINFO_DIRNAME、PATHINFO_BASENAME、および PATHINFO_EXTENSION が含まれます。デフォルトでは、すべての単位が返されます。

string realpath ( string path )

realpath() は、すべてのシンボリック接続を展開し、入力パス内の '/./'、'/../'、および冗長な '/' を処理し、正規化された絶対パス名を返します。返されたパスには、シンボリック リンク、「/./」または「/../」コンポーネントはありません。
realpath() は、ファイルが存在しない場合など、失敗した場合に FALSE を返します。 BSD システムでは、パスが単に存在しない場合、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() 関数で使用されるルールに従って、パターンに一致するすべてのファイル パスを検索します。略語展開やパラメータ置換は行われません。
一致するファイル/ディレクトリを含む配列を返します。エラーが発生した場合は 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 は、GNU C ライブラリを使用しない Windows またはその他のシステムでは使用できませんでした。
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 が用意されています:

$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');

注:ディレクトリについても同じことを行います。システムは操作結果を返します。成功した場合は TRUE、失敗した場合は FALSE を受け取り、名前の変更が成功したかどうかを知ることができます。


//将当前目录下的子目录a下面的文件1.gif重命名为2.gif。
rename('/a/1.gif', '/a/2.gif');

ファイルまたはディレクトリを移動したい場合は、名前を変更したパスを新しいパスに設定するだけです:

$renameResult = rename('/a/1.gif', '/a/2.gif');

ただし、ディレクトリ b が存在しない場合、移動は失敗することに注意してください。

ファイルをコピー


//将当前目录下的子目录a下面的文件1.gif,移动到当前目录下的子目录b,并且重命名为2.gif。
rename('/a/1.gif', '/b/2.gif');

注: この操作はディレクトリに対して実行できません。

対象ファイル(上記/b/1.gif)が既に存在する場合、元のファイルは上書きされます。
システムは操作結果を返します。成功した場合は TRUE、失敗した場合は FALSE を受け取り、コピーが成功したかどうかを知ることができます。

//将当前目录下的子目录a下面的文件1.gif,复制到当前目录下的子目录b,并命名为2.gif。
copy('/a/1.gif', '/b/1.gif');

ファイルまたはディレクトリの移動
操作方法は名前の変更と同じです

ファイルまたはディレクトリの存在の有無


$copyResult = copy('/a/1.gif', '/b/1.gif');

注: ファイルが存在する場合、システムは true を返し、存在しない場合は false を返します。ディレクトリに対しても同様の操作が可能です。


ファイル サイズを取得する


//检查上级目录下的文件logo.jpg是否存在。
$existResult = file_exists('../logo.jpg');

手順: システムは、ファイルのサイズをバイト単位で示す数値を返します。


新しいディレクトリを作成します


//在当前目录下的目录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,
为了不陷于死循环,所以还要让$filename !== false。一定要用!==,因为如果某个文件名如果叫'0',或者某些被系统认为是代表false,用!=就会停止循环*/
while( ($filename = readdir($handler)) !== false )  {
      3、目录下都会有两个文件,名字为'.'和‘..',不要对他们进行操作
      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。

以上就是(进阶篇)php文件夹与文件目录操作函数介绍的内容,更多相关内容请关注PHP中文网(www.php.cn)!


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