文件 $file
Bob 提供了访问文件系统的接口,便于让插件进行一些简单的文件存取。
在前面介绍模块的文章里面我提过,
require
方法如果使用绝对路径需要传入虚拟路径,通过
__filename
和
__dirname
获取到的路径也都是虚拟路径。
同样地,在访问文件系统相关接口的时候,也要使用 虚拟路径 ,并且 必须使用绝对路径 。插件不需要关心某个文件在电脑上的真实路径是什么,能读取的路径也很有限。
插件的文件系统可以访问两部分路径:
-
插件自身目录下的所有文件,访问时以
/
开头, 只有读取权限 。 -
我为每个插件都分配了一个独立的区域,可用于缓存文件,暂且称之为「插件沙盒目录」,访问时以
$sandbox/
开头, 具有读写权限 。当插件被卸载的时候,这个路径里的文件也会被清空。
注意,写入、移动和删除等操作的目标路径都是需要写入权限的,所以这些操作只能在插件沙盒目录下完成。
插件沙盒目录在电脑如下位置,调试过程可以打开这个目录检查文件是否写入成功,但是插件内部代码无需关心文件的真实存放位置。
~/Library/Containers/com.hezongyidev.Bob/Data/Documents/InstalledPluginSandbox
$file.read(path)
读取文件,参数为文件路径,返回结果是 $data 类型的数据。
$file.write(object)
写入文件,参数是
object
类型
-
data
属性对应需要写入的$data
类型的数据 -
path
属性对应目标路径
返回值是
bool
类型,代表是否写入成功。
$file.delete(path)
删除文件,参数是文件路径,返回值是
bool
类型,代表是否删除成功。
$file.list(path)
获取某文件夹下的所有文件名,传入的路径必须是一个文件夹。
$file.copy(object)
拷贝文件,参数是
object
类型
-
src
代表源路径 -
dst
代表目标路径
返回值是
bool
类型,代表是否拷贝成功。
$file.move(object)
移动文件,参数是
object
类型
-
src
代表源路径 -
dst
代表目标路径
返回值是
bool
类型,代表是否拷贝成功。