sblazheev/filesystem

异步文件系统抽象。

0.1.3 2019-04-24 13:04 UTC

This package is auto-updated.

Last update: 2024-09-25 07:49:30 UTC


README

Build Status Code Climate

ReactPHP的基于事件的异步、非阻塞文件系统访问库。

目录

  1. 简介
  2. 适配器
  3. 示例
  4. 安装
  5. 许可协议

简介

react/filesystem是一个用于异步、非阻塞文件系统访问的包。通过以下描述的各种适配器启用异步访问。

适配器

  • ChildProcessAdapter - 使用子进程执行IO操作的适配器(如果没有安装扩展,则为默认适配器)
  • EioAdapter - 使用ext-eio的适配器

示例

随着时间的推移,在此处添加示例。

创建文件系统对象

<?php

$loop = \React\EventLoop\Factory::create();
$filesystem = \React\Filesystem\Filesystem::create($loop);

文件对象

<?php

$loop = \React\EventLoop\Factory::create();
$filesystem = \React\Filesystem\Filesystem::create($loop);

$file = $filesystem->file(__FILE__); // Returns a \React\Filesystem\Node\FileInterface compatible object

读取文件

$filesystem->getContents('test.txt')->then(function($contents) {
});

这是一个方便的方法,用于

$filesystem->file('test.txt')->open('r')->then(function($stream) {
    return \React\Stream\BufferedSink::createPromise($stream);
})->then(function($contents) {
    // ...
});

这又是一个方便的方法,用于

$filesystem->file('test.txt')->open('r')->then(function ($stream) use ($node) {
    $buffer = '';
    $deferred = new \React\Promise\Deferred();
    $stream->on('data', function ($data) use (&$buffer) {
        $buffer += $data;
    });
    $stream->on('end', function ($data) use ($stream, $deferred, &$buffer) {
        $stream->close();
        $deferred->resolve(&$buffer);
    });
    return $deferred->promise();
});

写入文件

以写入模式(w标志)打开文件,并将abcde写入test.txt,然后关闭它。如果它不存在,则创建它(c标志),如果存在,则截断它(t标志)。

$filesystem->file('test.txt')->open('cwt')->then(function ($stream) {
    $stream->write('a');
    $stream->write('b');
    $stream->write('c');
    $stream->write('d');
    $stream->end('e');
});

目录对象

<?php

$loop = \React\EventLoop\Factory::create();
$filesystem = \React\Filesystem\Filesystem::create($loop);

$dir = $filesystem->dir(__DIR__); // Returns a \React\Filesystem\Node\DirectoryInterface compatible object

列出内容

$filesystem->dir(__DIR__)->ls()->then(function (array $list) {
   foreach ($list as $node) {
       echo $node->getPath(), PHP_EOL;
   }
});

安装

推荐通过Composer安装此库。 你是Composer的新手吗?

这将安装最新支持的版本

$ composer require react/filesystem:^0.1.1

许可协议

React/Filesystem采用MIT许可协议。