xp-framework/io-collections

XP Framework 的 I/O 集合

v10.1.0 2024-03-24 11:35 UTC

This package is auto-updated.

Last update: 2024-08-24 12:33:41 UTC


README

Build status on GitHub XP Framework Module BSD Licence Requires PHP 7.0+ Supports PHP 8.0+ Latest Stable Version

API

访问 I/O 集合的入口点是 io.collections.IOCollection 实现

  • io.collections.FileCollection - 指定文件系统路径中的文件
  • io.collections.ArchiveCollection - XAR 归档内的文件

要访问多个集合中的文件,请使用 io.collections.CollectionComposite 类。

迭代

子包 io.collections.iterate 允许迭代 I/O 集合。

  • io.collections.iterate.IOCollectionIterator - 迭代给定的 I/O 集合,可选地递归
  • io.collections.iterate.FilteredIOCollectionIterator - 如上所述,但带有可选的过滤器

过滤器

以下过滤器可用

基于日期

  • io.collections.iterate.AccessedAfterFilter(util.Date $date)
  • io.collections.iterate.AccessedBeforeFilter(util.Date $date)
  • io.collections.iterate.CreatedAfterFilter(util.Date $date)
  • io.collections.iterate.CreatedBeforeFilter(util.Date $date)
  • io.collections.iterate.ModifiedAfterFilter(util.Date $date)
  • io.collections.iterate.ModifiedBeforeFilter(util.Date $date)

基于大小

  • io.collections.iterate.SizeEqualsFilter(int $compare)
  • io.collections.iterate.SizeBiggerThanFilter(int $limit)
  • io.collections.iterate.SizeSmallerThanFilter(int $limit)

基于名称

  • io.collections.iterate.ExtensionEqualsFilter(string $compare)
  • io.collections.iterate.NameEqualsFilter(string $compare)
  • io.collections.iterate.NameMatchesFilter(string $pattern)
  • io.collections.iterate.UriMatchesFilter(string $pattern)

基于类型

  • io.collections.iterate.CollectionFilter()

要组合过滤器,请使用 util.Filters 类。

示例

此示例查找目录 /home/thekid/multimedia 内的所有 JPEG 文件

use io\collections\FileCollection;
use io\collections\iterate\{FilteredIOCollectionIterator, ExtensionEqualsFiler};
use util\cmd\Console;
use util\Filters;

$iterator= new FilteredIOCollectionIterator(
  new FileCollection('/home/thekid/multimedia'),
  Filters::allOf([new ExtensionEqualsFilter('.jpg'), new ExtensionEqualsFilter('.JPG')]), 
  true
);

foreach ($iterator as $file) {
  Console::writeLine($file);
}

另请参阅