amphp / file
基于 Amp 和 Revolt 的非阻塞文件系统访问。
Requires
- php: >=8.1
- amphp/amp: ^3
- amphp/byte-stream: ^2
- amphp/cache: ^2
- amphp/parallel: ^2.1
- amphp/sync: ^2
- revolt/event-loop: ^1
Requires (Dev)
- amphp/php-cs-fixer-config: ^2
- amphp/phpunit-util: ^3
- phpunit/phpunit: ^9
- psalm/phar: 5.22.2
Suggests
- ext-eio: ^2 || ^3
- ext-uv: ^0.3 || ^0.2
- 3.x-dev
- v3.1.1
- v3.1.0
- v3.0.2
- v3.0.1
- v3.0.0
- v3.0.0-beta.6
- v3.0.0-beta.5
- v3.0.0-beta.4
- v3.0.0-beta.3
- v3.0.0-beta.2
- v3.0.0-beta.1
- 2.x-dev
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.x-dev
- v1.0.2
- v1.0.1
- v1.0.0
- v0.3.x-dev
- v0.3.5
- v0.3.4
- v0.3.3
- v0.3.2
- v0.3.1
- v0.3.0
- v0.2.4
- v0.2.3
- v0.2.2
- v0.2.1
- v0.2.0
- v0.1.3
- v0.1.2
- v0.1.1
- v0.1.0
- dev-no-global-pool-reuse
This package is auto-updated.
Last update: 2024-09-08 13:38:41 UTC
README
AMPHP 是一个专为 PHP 设计的事件驱动库集合,考虑到纤维和并发。此包提供了一个抽象层和非阻塞文件访问解决方案,以保持您的应用程序响应。
安装
此包可以作为 Composer 依赖项安装。
composer require amphp/file
要求
- PHP 8.1+
amphp/file
无需任何 PHP 扩展即可直接运行。默认使用多个进程,但也包含一个使用当前进程中的 PHP 阻塞函数的阻塞驱动器。
扩展允许在后台使用线程而不是使用多个进程,如果它们可用,将自动使用。
使用方法
读取文件
读取指定文件的全部内容
$contents = Amp\File\read('/path/to/file.txt');
写入文件
将内容字符串写入指定路径
Amp\File\write('/path/to/file.txt', 'contents');
文件句柄
除了读取或写入整个文件外,库还允许打开一个 File
句柄,例如用于流数据。
$file = Amp\File\openFile('/path/to/file.txt', 'r'); Amp\ByteStream\pipe($file, getStdout());
File::read()
:另见File::isReadable
。File::write()
:另见File::isWritable
。File::end()
:另见WritableStream::end()
。File::close()
:关闭文件句柄。File::isClosed()
可用于检查文件句柄是否已经关闭。File::onClose()
可用于注册一个在文件句柄关闭时调用的回调。File::seek()
:设置内部指针位置并返回新的偏移量位置。SEEK_SET
:将位置设置为偏移量字节。SEEK_CUR
:将位置设置为当前位置加上偏移量。SEEK_END
:将位置设置为文件末尾加上偏移量。
File::isSeekable
:尚未文档化。File::tell()
:返回文件句柄的当前内部偏移量位置。File::eof()
:检查是否位于流的末尾(即“文件末尾”)。File::getPath()
:检索打开文件句柄时使用的路径。File::getMode()
:检索打开文件句柄时使用的模式。File::truncate()
:将文件截断到指定的长度。如果$size
大于当前文件大小,则使用 NUL 字节扩展文件。
元数据
文件元数据是指关于文件描述性信息,与其实际内容区分开来。这包括文件大小、权限、创建和修改时间戳、所有权和文件类型等详细信息。元数据提供了关于文件属性的重要上下文,使用户和应用能理解其特征,而无需深入研究内容。与文件的实际数据不同,文件数据包含有意义的信息或指令,元数据侧重于管理和结构属性,有助于文件组织、访问和管理。
存在性
exists()
:检查指定的路径是否存在。
文件大小
getSize()
:以字节为单位返回文件大小。
文件类型
isDirectory()
:检查给定的路径是否存在且是目录。isFile()
:检查给定的路径是否存在且是常规文件。isSymlink()
:检查给定的路径是否存在且是符号链接。
文件时间戳
getModificationTime()
:以秒为单位的 Unix 时间戳返回文件的修改时间。getAccessTime()
:以秒为单位的 Unix 时间戳返回文件的访问时间。getCreationTime()
: 返回文件的创建时间,以秒为单位的Unix时间戳。
低级访问
注意 如果可能,我们强烈建议使用高级API,如
exists()
,而不是直接使用getStatus()
/getLinkStatus()
API。
可以使用getStatus()
函数获取文件元数据,或者使用getLinkStatus()
来获取符号链接的元数据(如果您想访问链接的元数据而不是目标文件)。如果路径不存在,这两个函数都将返回null
。
<?php use Amp\File; require __DIR__ . '/../vendor/autoload.php'; var_dump(File\getStatus(__FILE__));
array(13) {
["dev"]=>
int(16777232)
["ino"]=>
int(15186622)
["mode"]=>
int(33188)
["nlink"]=>
int(1)
["uid"]=>
int(501)
["gid"]=>
int(20)
["rdev"]=>
int(0)
["size"]=>
int(104)
["blksize"]=>
int(4096)
["blocks"]=>
int(8)
["atime"]=>
int(1692381227)
["mtime"]=>
int(1692381226)
["ctime"]=>
int(1692381226)
}
文件组织
move()
: 移动或重命名文件或目录。deleteFile()
: 删除文件。createDirectory()
: 创建目录。createDirectoriesRecursively()
: 创建目录及其父目录。deleteDirectory()
: 删除目录。listFiles()
: 列出目录中的所有文件和子目录。changePermissions()
: 改变文件或目录的权限。changeOwner()
: 改变文件或目录的所有权。touch()
: 更新指定路径的访问和修改时间。如果文件不存在,它将自动创建。
链接
createHardlink()
: 创建新的硬链接。createSymlink()
: 创建新的符号链接。resolveSymlink()
: 解析符号链接到其目标路径。
版本控制
amphp/file
遵循与其他所有amphp
包相同的语义版本控制(semver)规范。
安全
如果您发现任何与安全相关的问题,请使用私有安全问题报告者,而不是使用公共问题跟踪器。
许可证
MIT许可证(MIT)。有关更多信息,请参阅LICENSE
。