文件系统助手
文件系统助手文件包含用于处理文件和目录的函数。
加载此助手
此助手使用以下代码加载
<?php
helper('filesystem');
可用函数
以下函数可用
- directory_map($sourceDir[, $directoryDepth = 0[, $hidden = false]])
- 参数:
$sourceDir (
string
) – 源目录的路径$directoryDepth (
int
) – 要遍历的目录深度 (0
= 全递归,1
= 当前目录,等等)$hidden (
bool
) – 是否包含隐藏路径
- 返回值:
文件数组
- 返回类型:
数组
示例
<?php $map = directory_map('./mydirectory/');
注意
路径几乎总是相对于您的主 index.php 文件。
目录中包含的子文件夹也将被映射。如果您希望控制递归深度,可以使用第二个参数(整数)。深度为
1
将只映射顶层目录<?php $map = directory_map('./mydirectory/', 1);
默认情况下,隐藏文件将不会包含在返回的数组中,隐藏目录将被跳过。要覆盖此行为,您可以将第三个参数设置为
true
(布尔值)<?php $map = directory_map('./mydirectory/', 0, true);
每个文件夹名称将是一个数组索引,而其包含的文件将按数字索引。以下是一个典型数组的示例
Array ( [libraries] => Array ( [0] => benchmark.html [1] => config.html ["database/"] => Array ( [0] => query_builder.html [1] => binds.html [2] => configuration.html [3] => connecting.html [4] => examples.html [5] => fields.html [6] => index.html [7] => queries.html ) [2] => email.html [3] => file_uploading.html [4] => image_lib.html [5] => input.html [6] => language.html [7] => loader.html [8] => pagination.html [9] => uri.html ) )
如果未找到结果,则将返回一个空数组。
- directory_mirror($original, $target[, $overwrite = true])
- 参数:
$original (
string
) – 原始源目录$target (
string
) – 目标目标目录$overwrite (
bool
) – 是否在发生冲突时覆盖单个文件
递归地将源目录的文件和目录复制到目标目录中,即“镜像”其内容。
示例
<?php try { directory_mirror($uploadedImages, FCPATH . 'images/'); } catch (\Throwable $e) { echo 'Failed to export uploads!'; }
您可以选择通过第三个参数更改覆盖行为。
- write_file($path, $data[, $mode = 'wb'])
- 参数:
$path (
string
) – 文件路径$data (
string
) – 要写入文件的数据$mode (
string
) –fopen()
模式
- 返回值:
true
如果写入成功,false
如果发生错误- 返回类型:
bool
将数据写入路径中指定的文件。如果文件不存在,则该函数将创建它。
示例
<?php $data = 'Some file data'; if (! write_file('./path/to/file.php', $data)) { echo 'Unable to write the file'; } else { echo 'File written!'; }
您可以选择通过第三个参数设置写入模式
<?php write_file('./path/to/file.php', $data, 'r+');
默认模式为
'wb'
。有关模式选项,请参阅 PHP 手册中的 fopen()。注意
为了使此函数能够将数据写入文件,必须设置其权限,使其可写。如果文件尚不存在,则包含它的目录必须可写。
注意
该路径相对于您的主站点 index.php 文件,而不是您的控制器或视图文件。CodeIgniter 使用前端控制器,因此路径始终相对于主站点索引。
注意
此函数在写入文件时会获取该文件的独占锁。
- delete_files($path[, $delDir = false[, $htdocs = false[, $hidden = false]]])
- 参数:
$path (
string
) – 目录路径$delDir (
bool
) – 是否也删除目录$htdocs (
bool
) – 是否跳过删除 .htaccess 和索引页面文件$hidden (
bool
) – 是否也删除隐藏文件(以句点开头的文件)
- 返回值:
true
如果成功,false
如果发生错误- 返回类型:
bool
删除提供的路径中包含的所有文件。
示例
<?php delete_files('./path/to/directory/');
如果第二个参数设置为
true
,则提供的根路径中包含的任何目录也将被删除。示例
<?php delete_files('./path/to/directory/', true);
注意
要删除文件,文件必须可写或由系统拥有。
- get_filenames($sourceDir[, $includePath = false[, $hidden = false[, $includeDir = true]]])
- 参数:
$sourceDir (
string
) – 目录路径$includePath (
bool|null
) – 是否将路径作为文件名的一部分包含在内;false 表示不包含路径,null 表示相对于$sourceDir
的路径,true 表示完整路径$hidden (
bool
) – 是否包含隐藏文件(以句点开头的文件)$includeDir (
bool
) – 是否将目录包含在数组输出中
- 返回值:
一个包含文件名数组
- 返回类型:
数组
以服务器路径作为输入,并返回一个包含其中所有文件名的数组。可以通过将第二个参数设置为 'relative'(表示相对路径)或任何其他非空值(表示完整文件路径)来选择性地将文件路径添加到文件名中。
注意
在 v4.4.4 之前,由于一个 bug,此函数不会跟踪符号链接文件夹。
示例
<?php $controllers = get_filenames(APPPATH . 'Controllers/');
- get_dir_file_info($sourceDir[, $topLevelOnly = true])
- 参数:
$sourceDir (
string
) – 目录路径$topLevelOnly (
bool
) – 是否只查看指定的目录(不包括子目录)
- 返回值:
一个包含有关提供的目录内容信息的数组
- 返回类型:
数组
读取指定的目录并构建一个包含文件名、文件大小、日期和权限的数组。只有在将第二个参数强制设置为 false 时,才会读取指定路径中包含的子文件夹,因为这可能是一个密集的操作。
示例
<?php $models_info = get_dir_file_info(APPPATH . 'Models/');
- get_file_info($file[, $returnedValues = ['name', 'server_path', 'size', 'date']])
- 参数:
$file (
string
) – 文件路径$returnedValues (
array|string
) – 要返回的类型信息,作为数组或逗号分隔字符串传递
- 返回值:
包含有关指定文件的信息的数组,或在失败时返回 false
- 返回类型:
数组
给定一个文件和路径,返回(可选)文件的名称、路径、大小和修改日期信息属性。第二个参数允许您明确声明要返回的信息。
有效的
$returnedValues
选项是:name
、size
、date
、readable
、writeable
、executable
和fileperms
。
- symbolic_permissions($perms)
- 参数:
$perms (
int
) – 权限
- 返回值:
符号权限字符串
- 返回类型:
string
接受数字权限(例如由 fileperms() 返回)并返回文件权限的标准符号表示法。
<?php echo symbolic_permissions(fileperms('./index.php')); // -rw-r--r--
- octal_permissions($perms)
- 参数:
$perms (
int
) – 权限
- 返回值:
八进制权限字符串
- 返回类型:
string
接受数字权限(例如由 fileperms() 返回)并返回文件权限的三字符八进制表示法。
<?php echo octal_permissions(fileperms('./index.php')); // 644
- same_file($file1, $file2)
- 参数:
$file1 (
string
) – 第一个文件的路径$file2 (
string
) – 第二个文件的路径
- 返回值:
两个文件是否存在且哈希值相同
- 返回类型:
boolean
比较两个文件,查看它们是否相同(基于它们的 MD5 哈希值)。
<?php echo same_file($newFile, $oldFile) ? 'Same!' : 'Different!';
- set_realpath($path[, $checkExistence = false])
- 参数:
$path (
string
) – 路径$checkExistence (
bool
) – 是否检查路径是否存在
- 返回值:
绝对路径
- 返回类型:
string
此函数将返回服务器路径,不包含符号链接或相对目录结构。可选的第二个参数将导致在无法解析路径时触发错误。
示例
<?php $file = '/etc/php5/apache2/php.ini'; echo set_realpath($file); // Prints '/etc/php5/apache2/php.ini' $non_existent_file = '/path/to/non-exist-file.txt'; echo set_realpath($non_existent_file, true); // Shows an error, as the path cannot be resolved echo set_realpath($non_existent_file, false); // Prints '/path/to/non-exist-file.txt' $directory = '/etc/php5'; echo set_realpath($directory); // Prints '/etc/php5/' $non_existent_directory = '/path/to/nowhere'; echo set_realpath($non_existent_directory, true); // Shows an error, as the path cannot be resolved echo set_realpath($non_existent_directory, false); // Prints '/path/to/nowhere'