この記事では、PHP SPL標準ライブラリのファイル操作(SplFileInfoとSplFileObject)の例を中心に紹介し、SplFileInfoを使ってファイル詳細の取得、SplFileObjectのトラバーサル、指定行の検索を行う方法について説明します。 CSV ファイルやその他の内容を入力して、必要な友達が参照できるようにします
PHP SPL は、ファイル操作を処理するために SplFileInfo と SplFileObject という 2 つのクラスを提供します。
SplFileInfo はファイルの詳細を取得するために使用されます:
コードは以下の通りです:
$file = new SplFileInfo('foo-bar.txt');
print_r(array(
'getATime' => $file->getATime(), //最終アクセス時刻
'getBasename' => $file->getBasename(), //パスなしでベース名を取得します
'getCTime' => $file->getCTime(), // i ノード変更時刻を取得します
'getExtension' => $file->getExtension(), //ファイル拡張子
'getFilename' => $file->getFilename(), //ファイル名を取得します
'getGroup' => $file->getGroup(), //ファイルグループを取得します
'getInode' => $file->getInode(), //ファイルのinodeを取得します
'getLinkTarget' => $file->getLinkTarget(), //ファイルリンク先のファイルを取得します
'getMTime' => $file->getMTime(), //最終更新時刻を取得します
'getOwner' => $file->getOwner(), //ファイルの所有者
'getPath' => $file->getPath(), //ファイル名を含まないファイルパス
'getPathInfo' => $file->getPathInfo(), //上位パスのSplFileInfoオブジェクト
'getPathname' => $file->getPathname(), //フルパス
'getPerms' => $file->getPerms(), //ファイル権限
'getRealPath' => $file->getRealPath(), //絶対ファイルパス
'getSize' => $file->getSize(),//バイト単位のファイルサイズ
'getType' => $file->getType(),//ファイルタイプ file dir link
'isDir' => $file->isDir(), //ディレクトリかどうか
'isFile' => $file->isFile(), //ファイルかどうか
'isLink' => $file->isLink(), //ショートカットリンクかどうか
'isExecutable' => $file->isExecutable(), //実行可能かどうか
'isReadable' => $file->isReadable(), // 読み取り可能かどうか
'isWritable' => $file->isWritable(), //書き込み可能かどうか
));
SplFileObject は SplFileInfo を継承し、ファイルの走査、検索、操作に使用される RecursiveIterator インターフェイスと SeekableIterator インターフェイスを実装します
トラバーサル:
コードは以下の通りです:
試してください {
foreach(new SplFileObject('foo-bar.txt') as $line) {
echo $line;
}
} catch (例外 $e) {
echo $e->getMessage();
}
指定された行を検索します:
コードは次のとおりです:
試してください {
$file = new SplFileObject('foo-bar.txt');
$file->seek(2);
echo $file->current();
} catch (例外 $e) {
echo $e->getMessage();
}
csvファイルに書き込む:
コードは次のとおりです:
$list = 配列(
array( 'aaa' , 'bbb' , 'ccc' , 'dddd' ),
array( '123' , '456' , '7891' ),
array( '"aaa"' , '"bbb"' )
);
$file = new SplFileObject ('file.csv', 'w');
foreach ( $list as $fields ) {
$file -> fputcsv ($fields);
}
。