Skip to content
FutureBlitz

    Install

    Import std.io.memory

    std.io.memory

    Streams over bytes and Strings in memory.

    Streams over memory: MemoryStream, bytes to read, write, and move around in, as a file's are; StringReader, which reads a String's UTF-8; and StringWriter, which collects text.

    std/io/memory.fb

    Types

    MemoryStream class

    Public Class MemoryStream Implements Reader, Writer, Seeker

    Bytes in memory that it reads, writes, and moves around in, as a file's are, from where it is, which they grow past as they're written. Writing past the end fills what's between with 0s.

    Examples

    Local memory = MemoryStream()
    Try memory.WriteText("hello")
    Expect(memory.Count == 5)
    Try memory.Seek(1, SeekOrigin.START)
    Expect((Try ReadAllText(memory)) == "ello")

    std/io/memory.fb, line 23

    • Public New(bytes: UInt8[] = []) constructor #

      One of a copy of the bytes, from their start, or an empty one.

    • Public Property Count: Int64 property #

      How many bytes it has.

    • Public Method Read(into: Buffer<UInt8>): Int64 Throws IOError method #

      Reads up to into.Count bytes from where it is into into, moves on past them, and gives how many, or 0 at its end.

    • Public Method Write(from: Buffer<UInt8>) Throws IOError method #

      Writes from's bytes where it is, over what's there and past its end, and moves on past them. Throws an IOError when it would hold more than 2147483647 bytes.

    • Public Method Seek(offset: Int64, origin: SeekOrigin): Int64 Throws IOError method #

      Moves to offset bytes from origin, which can be past its end, where a Write fills what's between with zeros, and gives where it is now. Throws an IOError before its start.

    • Public Method ToArray(): UInt8[] method #

      Its bytes, in a new array.

    StringReader class

    Public Class StringReader Implements Reader, Seeker

    Reads a String's UTF-8 bytes, and moves around in them.

    Examples

    Local reader = StringReader("héllo")
    Expect(reader.Count == 6)
    Expect((Try ReadAllText(reader)) == "héllo")

    std/io/memory.fb, line 92

    • Public New(text: String) constructor #

      A StringReader of text's UTF-8 bytes.

    • Public Property Count: Int64 property #

      How many bytes the text has.

    • Public Method Read(into: Buffer<UInt8>): Int64 Throws IOError method #

      Reads up to into.Count of the text's bytes from where it is into into, moves on past them, and gives how many, or 0 at its end.

    • Public Method Seek(offset: Int64, origin: SeekOrigin): Int64 Throws IOError method #

      Moves to offset bytes from origin, and gives where it is now. Throws an IOError before its start.

    StringWriter class

    Public Class StringWriter Implements Writer

    Collects what's written to it, as text, which ToString gives.

    Examples

    Local writer = StringWriter()
    Try Copy(StringReader("copied"), writer)
    Try writer.WriteText(" and added")
    Expect(writer.ToString() == "copied and added")

    std/io/memory.fb, line 138

    • Public New() constructor #

      A new StringWriter, with nothing written.

    • Public Property Count: Int64 property #

      How many bytes it has.

    • Public Method Write(from: Buffer<UInt8>) Throws IOError method #

      Adds from's bytes to what it has. Throws an IOError when it would hold more than 2147483647 bytes.

    • Public Method ToString(): String method #

      What it has, as text, with U+FFFD for each byte that doesn't start well-formed UTF-8.

    Report an issue with this page or with FutureBlitz on GitHub.