The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

Name

SPVM::IO::Dir - Directory Streams

Description

The IO::Dir class in SPVM has methods for directory streams.

Usage

use IO::Dir;

my $dh = IO::Dir->new(".");

while (my $dirent = $dh->read) {
  say $dirent->d_name;
}

my $offset = $dh->tell;

$dh->seek($offset);

Details

Porting

This class is a Perl's IO::Dir porting to SPVM.

Implementation

An opened directory stream is automatically closed when the instance is destroyed.

Fields

dir_stream

has dir_stream : Sys::IO::DirStream;

A directory stream.

Class Methods

static method new : IO::Dir ($dir_path : string = undef);

Creates a new IO::Dir object, calls "open" method with the directory path $dir_path, and returns the created object.

If $dir_path is not defined, "open" method is not called.

Exceptions:

Exceptions thrown by "open" method could be thrown.

Instance Methods

open

method open : void ($dir_path : string);

Opens a directory stream given the directory path $dir_path and sets "dir_stream" field to it.

This method calls Sys#opendir method.

Exceptions:

Exceptions thrown by Sys#opendir method could be thrown.

read

method read : Sys::IO::Dirent ();

Reads a directory entry from the directory stream stored in "dir_stream" field and returns it.

This method calls Sys#readdir method.

Exceptions:

Exceptions thrown by Sys#readdir method could be thrown.

seek

method seek : void ($offset : long);

Sets the location in the directory stream stored in "dir_stream" field to the offset $offset.

$offset should be the return value of "tell" method.

This method calls Sys#seekdir method.

Exceptions:

Exceptions thrown by Sys#seekdir method could be thrown.

tell

method tell : long ();

Returns the location in the directory stream stored in "dir_stream" field.

This method calls Sys#telldir method.

Exceptions:

Exceptions thrown by Sys#telldir method could be thrown.

rewind

method rewind : void ();

Resets the position of the directory stream stored in "dir_stream" field.

This method calls Sys#rewinddir method.

Exceptions:

Exceptions thrown by Sys#rewinddir method could be thrown.

close

method close : void ();

Closes the directory stream stored in "dir_stream" field.

This method calls Sys#closedir method.

Exceptions:

Exceptions thrown by Sys#closedir method could be thrown.

opened

method opened : int ();

If the directory stream stored in "dir_stream" is opened, returns 1, otherwise returns 0.

Copyright & License

Copyright (c) 2024 Yuki Kimoto

MIT License