Links

Файлы

Ниже описаны функции для работы с файлами и директориями.

Типы

finfo

Тип finfo используется для получения информации о файле и имеет следующие поля:
  • str Name - имя файла
  • int Size - размер файла в байтах
  • int Mode - флаги файла и разрешения
  • time Time - время последнего изменения
  • bool IsDir - true, если это директория
  • str Dir - директория, где расположен файл. Данное поле заполняется только при вызове функции ReadDir(str, int, str).

file

Тип file используется в функциях, которые работают с дескриптором открытого файла.

Функции

AppendFile(str filename, buf|str data)

Функция AppendFile добавляет данные переменной типа buf или str в конец файла filename. Если файл не существует, то AppendFile создает его с правами 0644.

ChDir(str dirname)

Функция ChDir изменяет текущую директорию.

ChMode(str name, int mode)

Функция ChMode изменяет атрибуты файла.

CloseFile(file f)

Функция CloseFile закрывает дескриптор файла, который был открыт с помощью функции OpenFile.

CopyFile(str src, str dest) int

Функция CopyFile копирует файл src в файл dest. Если файл dest существует, то он будет перезаписан. При копировании сохраняются атрибуты файла. Функция возвращает количество скопированных байт.

CreateDir(str dirname)

Функция CreateDir создает директорию с именем dirname, включая все необходимые родительские директории. Если dirname уже существующая директория, то CreateDir ничего не делает.

CreateFile(str name, bool trunc)

Функция CreateFile создает файл с указанным именем. Если параметр trunc равен true и файл уже существует, то в этом случае его размер станет 0.

ExistFile(str name) bool

Функция ExistFile возвращает true, если указанный файл или директория существует. В противном случае, возвращается false.

FileInfo(file f) finfo

Функция FileInfo получает информацию об указанном файле и возвращает структуру finfo. Файл должен быть октрыт с помощью функции OpenFile.

FileInfo(str name) finfo

Функция FileInfo получает информацию об указанном файле и возвращает структуру finfo.

FileMode(str name) int

Функция FileMode возвращает атрибуты файла.

GetCurDir() str

Функция GetCurDir возвращает текущую директорию.

IsEmptyDir(str path) bool

Функция IsEmptyDir возвращает true, если указанная директория пустая. В противном случае, возвращается false.

Md5File(str filename) str

Функция Md5File возвращает MD5 хэш указанного файла в виде шестнадцатеричной строки.

obj(finfo fi) obj

Функция obj конвертирует переменную типа finfo в объект. Полученный объект имеет поля: name, size, mode, time, isdir, dir.

OpenFile(str filename, int flags) file

Функция OpenFile открывает указанный файл и возвращает переменную типа file с дескриптором открытого файла. После работы с файлом дескриптор открытого файла должен быть закрыт с помощью функции CloseFile. Параметр flags может быть нулем или комбинацией следующих флагов:
  • CREATE - если файл не существует, то он будет создан.
  • TRUNC - файл будет обрезан до нулевой длины после открытия.
  • READONLY - файл будет открыт только для чтения.
file f = OpenFile(fname, CREATE)
Write(f, buf("some test string"))
SetPos(f, -15, 1)
buf b &= Read(f, 5)
CloseFile(f)

Read(file f, int size) buf

Функция Read читает size количество байт с текущей позиции в файле, который был открыт с помощью функции OpenFile. Функция возвращает переменную типа buf, которая содержит прочитанные данные.

ReadDir(str dirname) arr.finfo

Функция ReadDir читает директорию с указанным именем и возвращает список её поддиректорий и файлов.

ReadDir(str dirname, int flags, str pattern) arr.finfo

Функция ReadDir читает директорию dirname с указанным именем и возвращает список её поддиректорий и файлов в соотвествии с указанными параметрами. Параметр flags может быть комбинацией следующих флагов:
  • RECURSIVE - В этом случае будет рекурсивный поиск по всем поддиректориям.
  • ONLYFILES - Возвращаемый массив будет содержать только файлы.
  • ONLYDIRS - Возвращаемый массив будет содержать только директории.
  • REGEXP - Параметр pattern содержит регулярное выражения для сравнения имён файлов.
Если вы укажете одновременно флаги ONLYFILES и ONLYDIRS, то будут искаться файлы и директории.
Параметр pattern может содержать маску для файлов или регулярное выражение. В этом случае, будут возвращаться файлы и директории, которые соответствуют указанному шаблону. Маска может содержать следующие символы:
  • '*' - любая последовательность, кроме символа разделителя
  • '?' - любой одиночный символ, кроме символа разделителя
for item in ReadDir(ftemp, RECURSIVE, `*fold*`) {
ret += item.Name
}
for item in ReadDir(ftemp, RECURSIVE | ONLYFILES | REGEXP, `.*\.pdf`) {
ret += item.Name
}

ReadDir(str dirname, int flags, arr.str patterns, arr.str ignore) arr.finfo

Функция ReadDir читает директорию dirname с указанным именем и возвращает список её поддиректорий и файлов в соотвествии с указанными параметрами. Параметр flags описан выше. Параметр patterns является массивом строк и может содержать маски для файлов или регулярные выражения. Параметр ignore также содержит маски для файлов или регулярные выражения, но такие файлы или директории будут пропускаться. Если вы хотите указать в этих массивах регулярное выражение, то заключите его между символами '/'.
arr.str aignore = {`/txt/`, `*.pak`}
arr.str amatch = {`/\d+/`, `*.p??`, `/di/`}
for item in ReadDir(ftemp, RECURSIVE, amatch, aignore) {
ret += item.Name
}

ReadFile(str filename) str

Функция ReadFile читает указанный файл и возвращает его содержимое в виде строки.

ReadFile(str filename, buf out) buf

Функция ReadFile читает файл filename в переменную out типа buf и возвращает эту переменную.

ReadFile(str filename, int offset, int length) buf

Функция ReadFile читает данные из файла filename начиная со смещения offset и длиной length. Если offset меньше нуля, то смещение считается от конца к началу файла.

Remove(str name)

Функция Remove удаляет файл или пустую директорию.

RemoveDir(str dirname)

Функция RemoveDir удаляет директорию dirname включая всё её содержимое.

Rename(str oldpath, str newpath)

Функция Rename переименовывает (переносит) oldpath в newpath. Если newpath уже существует и является файлом, то Rename заменяет его.

SetFileTime(str name, time modtime)

Функция SetFileTime изменяет время последней записи у указанного файла.

SetPos(file f, int off, int whence) int

Функция SetPos устанавливает в файле текущую позицию для операций чтения или записи. Файл должен быть открыт с помощью функции OpenFile. Функция возвращает смещение новой позиции. Параметр whence может принимать следующие значения:
  • 0 - смещение off указано от начало файла.
  • 1 - смещение off указано от текущей позиции.
  • 2 - смещение off указано от конца файла.

Sha256File(str filename) str

Функция Sha256File возвращает SHA256 хэш указанного файла в виде шестнадцатеричной строки.

TempDir() str

Функция TempDir возвращает временную директорию по умолчанию.

TempDir(str path, str prefix) str

Функция TempDir создает новую временную директорию в директории path с именем, начинающемся на prefix и возвращает полное имя этой новой директории. Если path пустая строка, TempDir использует временную директорию по умолчанию.

Write(file f, buf b) file

Функция Write записывает данные из переменной типа buf в файл, который был открыт с помощью функции OpenFile. Функция возвращает параметр f.

WriteFile(str filename, buf|str data)

Функция WriteFile записывает данные из переменной типа buf или строки в файл filename. Если файл не существует, то он будет создан с разрешениями 0777, в противном случае, файл будет перезаписан заново.