Runtime API File Objects - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
Файлы и MemoryStream — объектные методы
File · MemoryStream · Оглавление
Эти методы вызываются у возвращённого объекта, а не как самостоятельные UO-команды. Они не входят второй раз в число 1037 глобальных имён.
File(path)
| Метод | Действие |
|---|---|
| Open() | Открывает существующий файл для чтения. |
| Create() | Открывает запись с начала. Существующий более длинный файл не обрезается. |
| WriteLn(value) | Записывает строку и сбрасывает буфер. Без открытого writer ничего не пишет. |
| ReadNumber() | Читает строку как десятичный Integer. Неверная строка/конец файла — 0; закрытый reader — ошибка. |
| Close() | Сбрасывает/закрывает поток. |
Записать число в новый примерный файл:
VAR output = File('wiki-example-number.txt')
output.Create()
output.WriteLn('42')
output.Close()
Прочитать число из существующего файла:
VAR input = File('wiki-example-number.txt')
input.Open()
VAR value = input.ReadNumber()
input.Close()
UO.Print(CStr(value))
Записать несколько строк:
VAR output = File('wiki-example-lines.txt')
output.Create()
FOR index = 1 TO 3
output.WriteLn(CStr(index))
NEXT
output.Close()
Имена файлов демонстрационные; при выполнении создаются/изменяются локальные файлы. В File-объекте нет зарегистрированных ReadLn, Append или Exists. Проверка наличия файла выполняется отдельной зарегистрированной командой, если она нужна вашему сценарию.
MemoryStream()
| Метод | Действие |
|---|---|
| Clear() | Очищает байты и устанавливает позицию 0. |
| Length() | Число байтов. |
| Position() | Текущая позиция чтения. |
| Rewind() | Устанавливает позицию 0. |
| ReadByte() | Читает следующий байт 0–255; конец потока — -1. |
| ToArray() | Возвращает массив Integer-байтов, не изменяя позицию. |
| SaveToFile(path) | Записывает все байты в файл, перезаписывая прежнее содержимое. |
Пустой поток и конец чтения:
VAR stream = MemoryStream()
UO.Print(CStr(stream.Length())) # 0
UO.Print(CStr(stream.ReadByte())) # -1
Обход уже заполненного потока:
VAR stream = MemoryStream()
# Перед циклом поток можно заполнить через HTTP_Get(url, stream).
stream.Rewind()
WHILE stream.Position() < stream.Length()
VAR byteValue = stream.ReadByte()
UO.Print(CStr(byteValue))
WEND
Получить массив и очистить поток:
VAR stream = MemoryStream()
VAR bytes = stream.ToArray()
UO.Print(CStr(GetArrayLength(bytes)))
stream.Clear()
WriteByte и Close не зарегистрированы как методы MemoryStream этого runtime. Сетевое заполнение смотрите в точных перегрузках HTTP_Get.