iautomation / filesystem-helper
1.0.0
2016-02-17 09:28 UTC
This package is not auto-updated.
Last update: 2024-09-18 18:43:55 UTC
README
文件系统操作辅助类
此类使用 PHP 迭代器,以动态和稳定地提供文件系统操作访问。
简介
我试图使其尽可能流畅和动态。奇怪的是,我似乎找不到目前现有的用于文件输入输出操作的动态类,所以我花了几小时编写了这个。请务必报告可能的错误。
我认为最重要的提示是,迭代器不像 glob 和其他方法提供的数组那样占用大量内存。此类使用迭代器。因此,我们有速度 + 扩展性。
有些人可能会 wonder 为什么我没有实现 glob 方法。两个很好的原因使我避免了 glob
- Glob 返回一个包含所有结果的数组,并且有相对较小的限制(大约10,000个结果)。
- Regex 覆盖了 glob 提供的内容,并且更多
这就是全部。祝您享受。
概述
提供以下方法
public static function create($folder, $mode=0777, $recursive=true)
public static function read($file)
public static function write($file, $contents, $flag='w+')
public static function searchR($folder, $pattern=null, $depth=-1, $flags=RecursiveIteratorIterator::SELF_FIRST)
public static function search($folder, $pattern=null)
public static function deleteR($folder, $pattern=null, $depth=-1)
public static function delete($folder_or_file, $pattern=null)
安装
此类可以独立使用,但建议通过 Composer 安装
composer require iautomation/filesystem-helper
使用
如果使用 Composer,只需做类似的事情
use \FilesystemHelper\FilesystemHelper;
include 'path/to/vendor/autoload.php';
FilesystemHelper::deleteR('test', null); // DELETE TEST AND ALL CONTENTS!!
否则,只需包含该类
use \FilesystemHelper\FilesystemHelper;
include 'path/to/FilesystemHelper.php';
FilesystemHelper::deleteR('test', null); // DELETE TEST AND ALL CONTENTS!!
示例
// create test folder
FilesystemHelper::create('test');
// write to test/test.php
FilesystemHelper::write('test/test.php', 'test123');
// get file contents
echo FilesystemHelper::read('test/a.php');
// get all direct folders and files under test
foreach(FilesystemHelper::search('test') as $file){
echo $file."\n";
}
// get all folders and files under test recursively
foreach(FilesystemHelper::searchR('test') as $file){
echo $file."\n";
}
// get all direct files under test with the php extension using regex
foreach(FilesystemHelper::search('test', '/.*.php/') as $file){
echo $file."\n";
}
// get all recursive files under test with the php extension using regex
foreach(FilesystemHelper::searchR('test', '/.*.php/') as $file){
echo $file."\n";
}
// get all directories under test
foreach(FilesystemHelper::searchR('test') as $file){
if($file->isDir())
echo $file."\n";
}
// get all files under test
foreach(FilesystemHelper::searchR('test') as $file){
if($file->isFile())
echo $file."\n";
}
// get all folders and files under test listed "backwards". This is particularly useful when deleting
$iter = FilesystemHelper::searchR('test', null, -1, RecursiveIteratorIterator::CHILD_FIRST);
foreach($iter as $file){
echo $file."\n";
}
/**
DELETE FUNCTIONS ARE NOT FORGIVING. USE WITH CAUTION
*/
// delete all folders and files under test recursively
FilesystemHelper::deleteR('test', null);
// delete all direct folders and files under test
FilesystemHelper::delete('test', null);
// delete all recursive files under test with the php extension using regex
FilesystemHelper::deleteR('test', '/.*.php/', 1);
// delete the test/test.php file
FilesystemHelper::delete('test/test.php');