Mojo::File-文件系统路径
使用Mojo::File;#可移植地处理文件系统路径my$path=Mojo::File->new('/home/sri/.vimrc');说$path->slurp;说$path->dirname;说$path->basename;说$path->extname;说$path->sibling('.bashrc');#使用替代构造函数使用Mojo::File qw(路径);my$path=path('/tmp/foo/bar')->make_path;$path->child('test.txt')->spew('Hello Mojo!');
Mojo::文件是一个基于标量的文件系统路径容器,为处理不同的操作系统提供了友好的API。
#直接访问标量以操作路径my$path=Mojo::文件->新建('/home/sri/test');$$path.=“。文本';
Mojo::文件实现以下功能,这些功能可以单独导入。
我的$path=curfile;
构建一个新的基于标量的Mojo::文件对象获取当前源文件的绝对路径。
my$path=路径;my$path=路径('/home/sri/.vimrc');my$path=路径('/home','sri','.vimrc');my$path=路径(文件::Temp->newdir);
构建一个新的基于标量的Mojo::文件对象,默认为使用当前工作目录。
#“foo/bar/baz.txt”(在UNIX上)路径('foo','bar','baz.txt');
我的$path=tempdir;my$path=临时目录('tempXXXXX');
构建一个新的基于标量的Mojo::文件对象的临时目录文件::Temp.
#较长版本my$path=路径(文件::Temp->newdir('tempXXXXX'));
我的$path=临时文件;my$path=临时文件(DIR=>'/tmp');
构建一个新的基于标量的Mojo::文件对象的临时文件文件::Temp.
#较长版本my$path=path(文件::Temp->new(DIR=>'/tmp'));
Mojo::文件实现以下方法。
my$name=$path->基本名称;my$name=$path->basename('.txt');
返回路径的最后一级文件::基本名称.
#“.vimrc”(在UNIX上)路径('/home/sri/.vimrc')->基本名称;#“测试”(在UNIX上)路径('/home/sri/test.txt')->基本名称('.txt'');
my$child=$path->child('.vimrc');
返回新的Mojo::文件对象相对于路径。
#“/home/sri/.vimrc”(在UNIX上)path('/home')->child('sri','.vimrc');
$path=$path->chmod(0644);
更改文件权限。
my$destination=$path->copy_to('/home/sri');my$destination=$path->copy_to('/home/sri/.vimrc.backup');
使用复制文件文件::复制并将目的地作为Mojo::文件对象。
我的$name=$path->dirname;
返回除最后一级以外的所有路径文件::Basename作为一个Mojo::文件对象。
#“/home/sri”(在UNIX上)路径('/home/sri/.vimrc')->目录名;
我的$ext=$path->extname;
返回路径的文件扩展名。
#“js”路径('/home/sri/test.js')->extname;
my$bool=$path->is_abs;
检查路径是否为绝对路径。
#True(在UNIX上)路径('/home/sri/.vimrc')->is_abs;#False(在UNIX上)路径('.vimrc')->is_abs;
我的$collection=$path->list;我的$collection=$path->list({hidden=>1});
列出目录中的所有文件并返回Mojo::系列包含结果的对象Mojo::文件物体。该列表不包括.
和..
.
#列出文件说出路径(“/home/sri/myapp”)->列表->每个;
这些选项当前可用:
- 目录
-
方向=>1
包括目录。
- 隐藏的
-
隐藏=>1
包括隐藏文件。
我的$collection=$path->list_tree;我的$collection=$path->listtree({hidden=>1});
递归列出目录中的所有文件并返回Mojo::系列包含结果的对象Mojo::文件物体。该列表不包括.
和..
.
#列出所有模板比如路径('/home/sri/myapp/templates')->listtree->each;
这些选项当前可用:
- 目录
-
方向=>1
包括目录。
- 不使用链接
-
dont_use_nlink=>1
武力文件::查找始终统计目录。
- 隐藏的
-
隐藏=>1
包括隐藏的文件和目录。
- 最大深度(_depth)
-
最大深度=>3
搜索文件时要下降的最大级别数。
我的$stat=$path->lstat;
返回a文件::stat符号链接的对象。
#获取符号链接大小说出路径('/usr/sbin/sendmail')->lstat->size;#获取符号链接修改时间说出路径('/usr/sbin/sendmail')->lstat->mtime;
$path=$path->make_path;$path=$path->make_path({mode=>0711});
如果目录不存在,则创建这些目录,并将任何其他参数传递给文件::路径.
我的$destination=$path->move_to('/home/sri');my$destination=$path->move_to('/home/sri/.vimrc.backup');
使用移动文件文件::复制并将目的地作为Mojo::文件对象。
my$path=Mojo::File->new;my$path=Mojo::File->new('/home/sri/.vimrc');my$path=Mojo::File->new('/home','sri','.vimrc');my$path=Mojo::File->new(文件::Temp->new);my$path=Mojo::File->new(文件::Temp->newdir);
构建新的Mojo::文件对象,默认为使用当前工作目录。
#“foo/bar/baz.txt”(在UNIX上)Mojo::File->new('foo','bar','baz.txt');
我的$handle=$path->open('+<');我的$handle=$path->open('r+');my$handle=$path->打开(O_RDWR);my$handle=$path->open(“<:编码(UTF-8)”);
使用打开文件IO::文件.
#合并“fcntl.h”常量使用Fcntl qw(O_CREAT O_EXCL O_RDWR);my$handle=path('/home/sri/test.pl')->open(O_RDWR|O_CREAT|O_EXCL);
我的$realpath=$path->realpath;
使用解析路径密码并将结果作为Mojo::文件对象。
$path=$path->remove;
删除文件。
$path=$path->remove_tree;$path=$path->remove_tree({keep_root=>1});
删除此目录及其可能包含的任何文件和子目录,任何其他参数都将传递给文件::路径.
my$sibling=$path->sibling('.vimrc');
返回新的Mojo::文件对象相对于路径的目录部分。
#“/home/sri/.vimrc”(在UNIX上)路径('/home/sri/.bashrc')->同级('.vimrc');#“/home/sri/.ssh/known_hosts”(在UNIX上)路径('/home/sri/.bashrc')->同级('.ssh','known_hosts');
my$bytes=$path->slurp;my$chars=$path->slurp('UTF-8');
从文件中一次读取所有数据。如果提供了编码,将尝试对内容进行解码。
$path=$path->spew($bytes);$path=$path->spew($chars,'UTF-8');
将所有数据一次性写入文件。如果提供了编码,则会在写入之前尝试对内容进行编码。
我的$stat=$path->stat;
返回a文件::stat对象作为路径。
#获取文件大小说出路径('/home/sri/.bashrc')->stat->size;#获取文件修改时间说出路径('/home/sri/.bashrc')->stat->mtime;
$path=$path->tap(子{…});
的别名Mojo::Base中的“tap”.
我的$absolute=$path->to_abs;
返回绝对路径作为Mojo::文件对象,则文件系统上不需要存在该路径。
我的$parts=$path->to_array;
在目录分隔符上拆分路径。
#“home:sri:.vimrc”(在UNIX上)连接“:”,@{path('/home/sri/.vimrc')->to_array};
my$relative=$path->to_rel('/some/base/path');
将从原始路径到目标路径的相对路径作为Mojo::文件对象。
#“sri/.vimrc”(在UNIX上)路径('/home/sri/.vimrc')->to_rel('/hame');
我的$str=$path->to_string;
将路径设置为字符串。
$path=$path->touch;
如果文件不存在,则创建该文件,或将修改和访问时间更改为当前时间。
#安全读取文件say path('.bashrc')->touch->slurp;
my$new_class=Mojo::File->with_roles('Mojo:∶File::Role::One');my$new_class=Mojo::File->with_roles('+One','+Two');$path=$path->with_roles('+One','+Two');
的别名Mojo::Base中的“with_roles”.
Mojo::文件重载以下运算符。
my@parts=@$path;
的别名“到阵列(_A)”.
我的$bool=$路径;
始终正确。
my$str=“$path”;
的别名“字符串”.
Mojolicious公司,Mojolicious::指南,https://mojolicious.org.