PHP SPL中提供了SplFileInfo和SplFileObject两个类来处理文件操作。
SplFileInfo用来获取文件详细信息:
复制代码 代码如下:$file = new SplFileInfo("foo-bar.txt"); print_r(array( "getATime" => $file->getATime(), //最后访问时间 "getBasename" => $file->getBasename(), //获取无路径的basename "getCTime" => $file->getCTime(), //获取inode修改时间 "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接口 ,用于对文件遍历、查找、操作
遍历:复制代码 代码如下:try { foreach(new SplFileObject("foo-bar.txt") as $line) { echo $line; }} catch (Exception $e) { echo $e->getMessage();}查找指定行:复制代码 代码如下:try { $file = new SplFileObject("foo-bar.txt"); $file->seek(2); echo $file->current();} catch (Exception $e) { echo $e->getMessage();}写入csv文件:复制代码 代码如下:$list = array ( 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 );}