class

SF::FileInputStream

Inherits SF::NonCopyable / SF::InputStream / Reference / Object

Implementation of input stream based on a file

This class is a specialization of InputStream that reads from a file on disk.

It wraps a file in the common InputStream interface and therefore allows to use generic classes or functions that accept such a stream, with a file on disk as the data source.

In addition to the virtual functions inherited from InputStream, FileInputStream adds a function to specify the file to open.

SFML resource classes can usually be loaded directly from a filename, so this class shouldn't be useful to you unless you create your own algorithms that operate on an InputStream

Usage example:

def process(stream : InputStream)
end

stream = SF::FileInputStream.open("some_file.dat")
process(stream)

See also: InputStream, MemoryInputStream

Constructors

new

Default constructor

Source
open(*args, **kwargs) : self

Shorthand for file_input_stream = FileInputStream.new; file_input_stream.open(...); file_input_stream

Raises InitError on failure

Source

Instance methods

finalize

Default destructor

Source
open(filename : String) : Bool

Open the stream from a file path

  • filename - Name of the file to open

Returns: True on success, false on error

Source
read(data : Slice) : Int64

Read data from the stream

After reading, the stream's reading position must be advanced by the amount of bytes read.

  • data - Buffer where to copy the read data

Returns: The number of bytes actually read, or -1 on error

Source
seek(position : Int) : Int64

Change the current reading position

  • position - The position to seek to, from the beginning

Returns: The position actually sought to, or -1 on error

Source
size

Return the size of the stream

Returns: The total number of bytes available in the stream, or -1 on error

Source
tell

Get the current reading position in the stream

Returns: The current position, or -1 on error.

Source