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

  1. Glob 返回一个包含所有结果的数组,并且有相对较小的限制(大约10,000个结果)。
  2. 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');