ホームページ >バックエンド開発 >PHPチュートリアル >PHP の基本入門 - ファイルとディレクトリの操作_PHP チュートリアル
これから PHP を始める友人向けに、さまざまな操作機能とファイルとディレクトリの適用例についての記事です。必要な友人は簡単に参照できます。
この章は前の章の続きとみなすことができ、ファイルの実際の内容以外に、ファイル サイズ、ディレクトリ、アクセス許可などの追加情報を紹介します。ファイル システム内の一部の関数は、シンボリック リンクを変更する関数 symlink()、ファイル アクセス許可を設定する関数 chmod()、ディレクトリ アクセスを設定する関数 umask() など、サーバーが特定のシステムである場合にのみ有効です。これらは Linux システムでのみ有効であり、Windows システムでは有効ではありません。 PHP5 以降で提供される DirectoryIterator クラスも、多くの実用的なディレクトリ操作をカプセル化します
コードは次のとおりです | コードをコピー |
//--------------- DirectoryIterator クラスを使用してディレクトリ内のファイルを反復処理します ------------- //--------------- PHP5以前のバージョンの実装方法 ------------- |
closedir($d);ファイル情報関数
関数名 この関数はどのようなファイル情報を提供しますか?
file_exists() ファイルが存在するかどうか
fileatime() 最終アクセス時刻
filectime() ファイル i ノードの最終変更時刻
filegroup() はファイルグループを取得します (整数を返します)
fileinode() はファイルの情報ノードの数を取得します (整数を返します)
filemtime() はファイルデータブロックが最後に書き込まれた時刻を取得します (Unix タイムスタンプを返します)
fileowner() はファイルの所有者を取得します (ユーザー ID を返します)
fileperms() はファイル権限を取得します
filesize() はファイルサイズをバイト単位で取得します
filetype() はファイルタイプを取得し、fifo、char、dir、block、link、file、unknown を返す場合があります
is_dir() は、指定されたファイル名がディレクトリであるかどうかを判断します
is_executable() は、指定されたファイル名が実行可能かどうかを判断します (PHP5.0.0 以降の Windows で利用可能)
is_file() は、指定されたファイル名が通常のファイルかどうかを判断します
is_link() は、指定されたファイル名がシンボリック リンクかどうかを判断します
is_readable() は、指定されたファイル名が読み取り可能かどうかを判断します
is_writable() は、指定されたファイル名が書き込み可能かどうかを判断します
ディレクトリ関連の機能
関数名 この関数はどのようなファイル情報を提供しますか?
mkdir() は新しいディレクトリを作成し、2 番目のパラメータを使用してアクセス許可を設定できます
rmdir() ディレクトリを削除します
rename() はファイルまたはディレクトリの名前を変更します
ディレクトリクラス関連のメソッド
DirectoryIterator クラスは、多くのディレクトリ関連のメソッドをカプセル化します
メソッド名 この関数はどのようなディレクトリ情報を提供しますか?
isDir() は、指定された DirectoryIterator 項目オブジェクトがディレクトリであるかどうかを判断します
isDot() は、現在の DirectoryIterator 項目オブジェクトが「.」または「..」であるかどうかを判断します
isFile() は、現在の DirectoryIterator 項目オブジェクトが有効なファイルかどうかを判断します
isLink() は、現在の DirectoryIterator 項目オブジェクトが接続であるかどうかを判断します
isReadable() は、現在の DirectoryIterator 項目オブジェクトが読み取り可能かどうかを判断します
isWritable() は、現在の DirectoryIterator 項目オブジェクトが書き込み可能かどうかを判断します
isExecutable() は、現在の DirectoryIterator 項目オブジェクトが実行可能かどうかを判断します
getATime() は現在の Iterator 項目の最終アクセス時刻を取得します
getCTime() は現在の Iterator 項目の最終変更時刻を取得します
getMTime() 現在の Iterator 項目ファイルのデータ ブロックが最後に書き込まれた時刻を取得します
getFilename() は現在の Iterator 項目のファイル名 (拡張子付き) を取得します
getPathname() は現在の Iterator 項目のパス名を取得します
getPath() は現在の Iterator 項目のパス名とファイル名を取得します
getGroup() は現在の Iterator 項目グループ ID を取得します
getOwner() は現在の Iterator 項目の所有者 ID を取得します
getPerms() 現在の Iterator 項目の権限を取得します
getSize() は現在の Iterator 項目のファイル サイズを取得します
getType() は、現在の Iterator 項目タイプ (ファイル、リンク、ディレクトリなど) を取得します
getInode() は現在の Iterator 項目の i ノード番号を取得します
ファイルのタイムスタンプが解決されました
touch()関数はファイルの更新時間を変更します
fileatime() 関数は、ファイルが最後に読み取りまたは書き込みのために開かれた時間を返します
filemtime() 関数は、ファイルの内容が最後に変更された時間を返します
filectime() 関数は、ファイルのコンテンツまたはメタデータが最後に変更された時間を返します
ファイル情報を取得する
ファイル関連の情報を含む配列は、stat() を通じて取得できます。この関数と同様に、この関数はファイル ハンドルをパラメータとして受け取ります (fopen() または Popen() によって返されます)。シンボルまたはファイル接続に関する情報を取得するために使用されます。
数値インデックス文字列インデックス説明
0 dev デバイス番号
1ino情報ノード番号
2モード保護モード
3 nlink 接続されている接続数
4 uid 所有者のユーザー ID
5 gid グループ ID
6 rdev デバイスタイプ (inode デバイスの場合)
7 サイズのファイルサイズ (バイト単位)
8 atime 最終アクセス時刻 (Unix タイムスタンプ)
9 mtime 最終更新時刻 (Unix タイムスタンプ)
10 ctime 最終変更時刻 (Unix タイムスタンプ)
11 blksize ファイルシステムの IO ブロックサイズ
12ブロック 占有ブロック数
ファイル権限を変更する
chmod() 関数はファイルの権限を変更します
chown() 関数はファイルの所有者を変更します
chgrp() 関数はファイルが属するグループを変更します
注意:上記の3つの機能はWindowsシステムでは無効です
ファイル名の各部分に関する情報を取得します
Basename() 関数はファイル名を取得でき、dirname() 関数はパス名を取得でき、pathinfo() はディレクトリ名、完全なファイル名、拡張子、およびファイル名 (つまり、拡張子なし) の連想配列を取得します。 ) キー名は [ディレクトリ名]、[ベース名]、[拡張子]、[ファイル名]です
現在のディレクトリ パス (他の PHP ファイルを参照するためによく使用される物理パス) は、多くの場合、dirname(__FILE__) の組み合わせによって取得されます
ファイルを削除する
unlink()関数を使用してファイルを削除すると、E_WARNINGエラーが生成されます
ヒント: PHP5.0.0以降、この機能はFTPなどのリモートファイルの削除にも使用できます。
ファイルをコピーまたは移動する
ファイルをコピーするには copy(old_dir, new_dir) 関数を使用し、ファイルを移動するには rename(old_dir, new_dir) 関数を使用します。ここでの new_dir はファイル名を変更できます。
パターンマッチングファイル名リスト(あいまいクエリ)
コマンド ラインなどのディレクトリ内のすべての jpg ファイル (*.jpg) をクエリする場合は、FileterIterator サブクラスの accept() メソッドまたは DirectoryIterator クラスの glob() 関数を使用して、一致するファイル名を取得できます。
//FileterIteratorの実装コード
コードは次のとおりです | コードをコピー |
クラス ImageFilter は FilterIterator を拡張します { 「; |
//--------------- glob関数の実装コード----------
コードは次のとおりです | コードをコピー |
foreach (glob('/usr/local/docs/*.txt') as $file) { $contents = file_get_contents($file); 「$file には $contentsn が含まれています」を印刷します; |
}再帰ディレクトリ内のファイル
ディレクトリとそのサブディレクトリのファイルサイズを取得したい場合は、RecursiveDirectoryIterator(サブディレクトリ取得機能を提供)とRecursiveIteratorIterator(フラット化)を使用します
コードは次のとおりです | コードをコピー |
$dir = new RecursiveDirectoryIterator('/usr/local'); |