支付宝扫一扫付款
微信扫一扫付款
(微信为保护隐私,不显示你的昵称)
Filesystem组件为文件系统提供基本功能。
你可以通过下述两种方式安装:
通过Composer安装(Packagist上的symfony/filesystem
)
通过官方Git宝库(https://github.com/symfony/filesystem)
然后,包容vendor/autoload.php
文件,以开启Composer提供的自动加载机制。否则,你的程序将无法找到这个Symfony组件的类。
Filesystem
类是文件系统操作的唯一入口点:
1 2 3 4 5 6 7 8 9 10 |
mkdir()
创建一个目录。在POSIX文件系统上,目录默认被创建为 0777
模式。你可以使用第二个参数来设置自己的mode:
1 | $fs->mkdir('/tmp/photos', 0700); |
你可以传入一个数组,或任何 Traversable
对象,来作为第一个参数。
本方法忽略已经存在的目录。
exists()
检查所有的文件/目录是否存在,如果找不到就返回 false
:
1 2 3 4 5 6 | // this directory exists, return true / 目录存在,返回true
$fs->exists('/tmp/photos');
// rabbit.jpg exists, bottle.png does not exists, return false
// rabbit.jpg存在,bottle.png不存在,返回false
$fs->exists(array('rabbit.jpg', 'bottle.png')); |
你可以传入一个数组,或任何 Traversable
对象,来作为第一个参数。
copy()
用于拷贝文件。如果目标已经存在,则文件只在源文件的修改日期晚于目标文件时才拷贝。这个行为可以被第三个布尔值参数所覆盖:
touch()
对一个文件设置访问和修改时间。默认使用当前时间。你可以通过第二个参数设置成你自己的。第三个参数是访问时间:
你可以传入一个数组,或任何 Traversable
对象,来作为第一个参数。
chown()
用于改变文件的owner(创建者)。第三个参数是一个布尔值的递归选项:
你可以传入一个数组,或任何 Traversable
对象,来作为第一个参数。
chgrp()
用于改变一个文件的群组。第三个参数是一个布尔值的递归选项:
你可以传入一个数组,或任何 Traversable
对象,来作为第一个参数。
chmod()
用于改变文件的mode(安全模式)。第四个参数是一个布尔值的递归选项:
你可以传入一个数组,或任何 Traversable
对象,来作为第一个参数。
remove()
可以轻松地删除文件, symlinks, 目录等等:
1 | $fs->remove(array('symlink', '/path/to/directory', 'activity.log')); |
你可以传入一个数组,或任何 Traversable
对象,来作为第一个参数。
rename()
用于对文件和目录重命名:
symlink()
创建了一个从“目标源(target)”到“目的地(destination)”的symbolic link。如果文件系统不支持symbolic links,有第三个布尔值参数可用:
1 2 3 4 5 6 |
makePathRelative()
返回一个目录相对于“另一个给定目录”的路径:
1 2 3 4 5 6 7 | // returns '../'
$fs->makePathRelative(
'/var/lib/symfony/src/Symfony/',
'/var/lib/symfony/src/Symfony/Component'
);
// returns 'videos/'
$fs->makePathRelative('/tmp/videos', '/tmp') |
mirror()
镜像了一个目录:
1 | $fs->mirror('/path/to/source', '/path/to/target'); |
isAbsolutePath()
返回 true
,如果给定的是绝对路径的话;否则返回 false
:
1 2 3 4 5 6 7 8 | // return true
$fs->isAbsolutePath('/tmp');
// return true
$fs->isAbsolutePath('c:\\Windows');
// return false
$fs->isAbsolutePath('tmp');
// return false
$fs->isAbsolutePath('../dir'); |
dumpFile()
允许你剥离出内容形成文件。它是以自动方式完成的:首先写入到一个临时文件,完成之后再把它移动到一个新的文件位置。这意味着用户始终“既能看到完整的旧文件,又能看到完整的新文件”(而决不会看到部分写入的文件):
1 | $fs->dumpFile('file.txt', 'Hello World'); |
file.txt
文件现在的内容是 Hello World
。
只要有错误发生,一个实现了 ExceptionInterface
或 IOExceptionInterface
的异常就会被抛出。
一个 IOException
异常会在目录创建失败时抛出。
本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。