内容

名称

Archive::Tar::File - 从 Archive::Tar 中提取的内存中文件的子类

概要

my @items = $tar->get_files;

print $_->name, ' ', $_->size, "\n" for @items;

print $object->get_content;
$object->replace_content('new content');

$object->rename( 'new/full/path/to/file.c' );

描述

Archive::Tar::Files 为内存中提取的文件提供了一个简洁的、面向对象的层级。它主要在 Archive::Tar 内部使用以整理代码,但用户也可以使用此 API。

访问器

此包中的许多方法都是对 tar 头文件中各种字段的访问器

名称

文件的名称

mode

文件的模式

uid

拥有该文件的用户 ID

gid

拥有该文件的组 ID

size

文件大小(字节)

mtime

修改时间。如果需要,在 MacOS 上调整为 mac-time

chksum

tar 头部的校验和字段

type

文件类型 - 数字,但可与导出常量比较 - 请参阅 Archive::Tar 的文档

linkname

如果文件是符号链接,则指向的文件

magic

Tar 魔术字符串 - 对大多数用户来说没有用

version

Tar 版本字符串 - 对大多数用户来说没有用

uname

拥有该文件的用户名

gname

拥有该文件的组名

devmajor

特殊文件情况下的设备主编号

devminor

特殊文件情况下的设备次编号

prefix

如果有的话,任何要添加到提取路径的目录

raw

原始 tar 头部 - 对大多数用户来说没有用

Methods

Archive::Tar::File->new( file => $path )

从现有文件返回一个新的 Archive::Tar::File 对象。

失败时返回 undef。

Archive::Tar::File->new( data => $path, $data, $opt )

从数据返回一个新的 Archive::Tar::File 对象。

$path 定义文件名(不需要存在),$data 定义文件内容,$opt 是一个指向属性哈希的引用,这些属性可用于覆盖默认属性(tar 头部中的字段),这些属性在上面的访问器部分中描述。

失败时返回 undef。

Archive::Tar::File->new( chunk => $chunk )

从原始 512 字节 tar 存档块返回一个新的 Archive::Tar::File 对象。

失败时返回 undef。

$bool = $file->extract( [ $alternative_name ] )

提取此对象,可选地提取到备用名称。

有关详细信息,请参阅 Archive::Tar->extract_file

成功时返回 true,失败时返回 false。

$path = $file->full_path

返回 tar 头部的完整路径;这基本上是 `prefix` 和 `name` 字段的串联。

$bool = $file->validate

在 Archive::Tar 内部读取 tar 文件时完成:验证头部的校验和以确保 tar 文件的完整性。

成功返回 true,失败返回 false。

$bool = $file->has_content

返回一个布尔值,指示当前对象是否包含内容。一些特殊文件,比如目录等,永远不会包含任何内容。此方法主要用于确保在查看对象的內容时不会收到未初始化值的警告。

$content = $file->get_content

返回内存中文件的当前内容。

$cref = $file->get_content_by_ref

以标量引用形式返回内存中文件的当前内容。普通用户不需要这个,但如果你在 tar 归档文件中处理非常大的数据文件,它会节省内存,因为它会通过引用传递内容,而不是先复制一份。

$bool = $file->replace_content( $content )

用新内容替换文件的当前内容。这只会影响内存中的归档文件,直到你写入磁盘,不会影响磁盘上的版本。

成功返回 true,失败返回 false。

$bool = $file->rename( $new_name )

将当前文件重命名为 $new_name。

请注意,你必须为 $new_name 指定一个 Unix 路径,因为根据 tar 标准,归档文件中的所有文件都必须是 Unix 路径。

成功时返回 true,失败时返回 false。

$bool = $file->chmod $mode)

将 $file 的模式更改为 $mode。模式可以是字符串或数字,无论是否给出前导 0,都将被解释为八进制。

成功时返回 true,失败时返回 false。

$bool = $file->chown( $user [, $group])

将 $file 的所有者更改为 $user。如果给出 $group,则也会更改 $group。你也可以传递一个用冒号分隔用户和组的单个参数,例如 'root:wheel'。

成功时返回 true,失败时返回 false。

便捷方法

要快速检查 `Archive::Tar::File` 对象的类型,可以使用以下方法

$file->is_file

如果文件类型为 file,则返回 true。

$file->is_dir

如果文件类型为 dir,则返回 true。

如果文件类型为 hardlink,则返回 true。

如果文件类型为 symlink,则返回 true。

$file->is_chardev

如果文件类型为 chardev,则返回 true。

$file->is_blockdev

如果文件类型为 blockdev,则返回 true。

$file->is_fifo

如果文件类型为 fifo,则返回 true。

$file->is_socket

如果文件类型为 socket,则返回 true。

如果文件类型为 LongLink,则返回 true。在成功 read 后不应该发生。

$file->is_label

如果文件类型为 Label,则返回 true。在成功 read 后不应该发生。

$file->is_unknown

如果文件类型为 unknown,则返回 true。