内容

名称

IO::File - 为文件句柄提供对象方法

概要

use IO::File;

my $fh = IO::File->new();
if ($fh->open("< file")) {
    print <$fh>;
    $fh->close;
}

my $fh = IO::File->new("> file");
if (defined $fh) {
    print $fh "bar\n";
    $fh->close;
}

my $fh = IO::File->new("file", "r");
if (defined $fh) {
    print <$fh>;
    undef $fh;       # automatically closes the file
}

my $fh = IO::File->new("file", O_WRONLY|O_APPEND);
if (defined $fh) {
    print $fh "corge\n";

    my $pos = $fh->getpos;
    $fh->setpos($pos);

    undef $fh;       # automatically closes the file
}

autoflush STDOUT 1;

描述

IO::File 继承自 IO::HandleIO::Seekable。它扩展了这些类,提供了特定于文件句柄的方法。

构造函数

new ( FILENAME [,MODE [,PERMS]] )

创建一个 IO::File 对象。如果它接收任何参数,则将这些参数传递给 open 方法;如果打开失败,则销毁该对象。否则,它将返回给调用者。

new_tmpfile

创建一个 IO::File 对象,该对象以读写模式打开一个新创建的临时文件。在支持此功能的系统上,临时文件是匿名的(即,它在创建后被解除链接,但保持打开状态)。如果无法创建或打开临时文件,则销毁 IO::File 对象。否则,它将返回给调用者。

方法

open( FILENAME [,MODE [,PERMS]] )
open( FILENAME, IOLAYERS )

open 接受一个、两个或三个参数。使用一个参数时,它只是内置 open 函数的前端。使用两个或三个参数时,第一个参数是文件名,可能包含空格或其他特殊字符,第二个参数是打开模式,可以选择后跟文件权限值。

如果 IO::File::open 接收 Perl 模式字符串(">","+<" 等)或 ANSI C fopen() 模式字符串("w","r+" 等),它将使用基本 Perl open 运算符(但会保护任何特殊字符)。

如果IO::File::open被赋予一个数字模式,它会将该模式和可选的权限值传递给Perl的sysopen操作符。权限默认为0666。

如果IO::File::open被赋予一个包含:字符的模式,它会将所有三个参数传递给三参数open操作符。

为了方便起见,IO::File会从Fcntl模块导出O_XXX常量,如果该模块可用。

binmode( [LAYER] )

binmode在底层的IO对象上设置binmode,如perldoc -f binmode中所述。

binmode接受一个可选参数,即传递给binmode调用的层。

注意

一些操作系统可能会在目录上执行IO::File::new()IO::File::open()而不会出现错误。这种行为不可移植,不建议使用。建议使用opendir()readdir()IO::Dir

参见

perlfunc, "I/O操作符" 在perlop中, IO::Handle, IO::Seekable, IO::Dir

历史

源自Graham Barr <[email protected]>的FileHandle.pm。