模块:莫霍::文件

名称

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::文件实现以下功能,这些功能可以单独导入。

curfile文件

我的$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');

chmod公司

$path=$path->chmod(0644);

更改文件权限。

复制到(_T)

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;

是(_A)

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

搜索文件时要下降的最大级别数。

lstat卫星

我的$stat=$path->lstat;

返回a文件::stat符号链接的对象。

#获取符号链接大小说出路径('/usr/sbin/sendmail')->lstat->size;#获取符号链接修改时间说出路径('/usr/sbin/sendmail')->lstat->mtime;

生成路径(_P)

$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”.

收件人(_A)

我的$absolute=$path->to_abs;

返回绝对路径作为Mojo::文件对象,则文件系统上不需要存在该路径。

到阵列(_A)

我的$parts=$path->to_array;

在目录分隔符上拆分路径。

#“home:sri:.vimrc”(在UNIX上)连接“:”,@{path('/home/sri/.vimrc')->to_array};

到rel

my$relative=$path->to_rel('/some/base/path');

将从原始路径到目标路径的相对路径作为Mojo::文件对象。

#“sri/.vimrc”(在UNIX上)路径('/home/sri/.vimrc')->to_rel('/hame');

到字符串(_S)

我的$str=$path->to_string;

将路径设置为字符串。

触摸

$path=$path->touch;

如果文件不存在,则创建该文件,或将修改和访问时间更改为当前时间。

#安全读取文件say path('.bashrc')->touch->slurp;

带孔(_R)

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.