Справка по API
#
FileIO.FileIO — Module
FileIO API (краткое описание, более подробную информацию см. в отдельных функциях):
-
format"PNG": указывает определенный формат. -
File{fmt}иStream{fmt}: типы объектов, объявляющие, что ресурс имеет определенный форматfmt. -
load([filename|stream]): считывает данные из форматированного файла с выводом его формата. -
load(File{format"PNG"}(filename)): указание формата вручную. -
loadstreaming([filename|stream]): аналогичноload, но возвращает объект, из которого можно считывать данные. -
save(filename, data...): для аналогичных операций, связанных с сохранением данных. -
savestreaming([filename|stream]): аналогичноsave, но возвращает объект, в который можно записывать данные. -
io = open(f::File, args...): открывает файл. -
io = stream(s::Stream): возвращает IOStream из объекта запросаs. -
query([filename|stream]): пытается вывести формат файлаfilename. -
unknown(q): возвращает true, если разрешить запрос не удается. -
skipmagic(io, fmt): устанавливает позицию вioсразу после магических байтов. -
magic(fmt): возвращает магические байты для форматаfmt. -
info(fmt): возвращает(magic, extensions)для форматаfmt. -
add_format(fmt, magic, extension, libraries...): регистрирует новый формат. -
add_loader(fmt, :Package): указывает, чтоPackageподдерживает загрузку файлов типаfmt. -
add_saver(fmt, :Package): указывает, чтоPackageподдерживает сохранение файлов типаfmt.
#
FileIO.DataFormat — Type
DataFormat{sym}(): указывает известный двоичный или текстовый формат типа sym, где sym — это всегда символ. Например, файл CSV может иметь формат DataFormat{:CSV}().
Простой способ записи DataFormat{:CSV} — format"CSV".
#
FileIO.File — Type
File{fmt}(filename) указывает, что filename — это файл известного формата DataFormat fmt. Например, File{format"PNG"}(filename) означает файл PNG.
|
Совместимость
Для |
#
FileIO.Stream — Type
Stream{fmt}(io, filename=nothing) указывает, что поток io записывается в известном формате DataFormat fmt. Например, Stream{format"PNG"}(io) означает формат PNG. С помощью необязательного аргумента filename, если его значение известно, можно улучшать сообщения об ошибках и т. д.
|
Совместимость
Для |
#
FileIO.add_format — Method
add_format(fmt, magic, extension) регистрирует новый формат DataFormat. Пример:
add_format(format"TIFF", (UInt8[0x4d,0x4d,0x00,0x2b], UInt8[0x49,0x49,0x2a,0x00]), [".tiff", ".tif"]) add_format(format"PNG", [0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a], ".png") add_format(format"NRRD", "NRRD", [".nrrd",".nhdr"])
Имейте в виду, что в расширениях, магических числах и идентификаторах форматов учитывается регистр.
Указать пакеты, которые поддерживают формат, можно также с помощью вызова add_format(fmt, magic, extension, pkgspecifiers...), например, с такими значениями pkgspecifiers:
add_format(fmt, magic, extension, [:PkgA=>UUID(...)]) # формат поддерживается только пакетом PkgA (загрузка и сохранение) add_format(fmt, magic, extension, [:PkgA=>uuidA], [:PkgB=>uuidB]) # сначала пробуем использовать PkgA, но если не получается, пробуем PkgB add_format(fmt, magic, extension, [:PkgA=>uuidA, LOAD], [:PkgB=>uuidB]) # сначала пробуем использовать PkgA для операции `load`; если не получается, используем PkgB add_format(fmt, magic, extension, [:PkgA=>uuidA, OSX], [:PkgB=>uuidB]) # используем PkgA в OSX и PkgB в остальных случаях
Все значения uuid имеют тип UUID и могут быть получены из файла Project.toml пакета.
Для сужения pkgspecifiers можно сочетать LOAD, SAVE, OSX, Unix, Windows и Linux произвольными способами.
#
FileIO.add_loader — Function
add_loader(fmt, :Package=>uuid)
add_loader(fmt, [:Package=>uuid, specifiers...])
Объявляет, что формат fmt может быть загружен с помощью пакета :Package. Спецификаторы (OSX, Unix, Windows и Linux) ограничивают применимость определенными операционными системами.
См. также описание метода add_format, который позволяет одновременно и объявлять формат, и указывать поддерживаемые пакеты.
#
FileIO.add_saver — Function
add_saver(fmt, :Package=>uuid)
add_saver(fmt, [:Package=>uuid, specifiers...])
Объявляет, что формат fmt может быть сохранен с помощью пакета :Package. Спецификаторы (OSX, Unix, Windows и Linux) ограничивают применимость определенными операционными системами.
См. также описание метода add_format, который позволяет одновременно и объявлять формат, и указывать поддерживаемые пакеты.
#
FileIO.del_format — Method
del_format(fmt::DataFormat) удаляет fmt из реестра форматов.
#
FileIO.load — Function
-
load(filename)загружает содержимое форматированного файла, пытаясь вывести формат изfilenameи (или) магических байтов в файле (см. описание функцииquery). -
load(strm)загружает данные изIOStreamили аналогичного объекта. В данном случае расширения имени файла нет, поэтому формат распознается на основе магических байтов. -
load(File{format"PNG"}(filename))задает формат напрямую; формат изqueryигнорируется. -
load(Stream{format"PNG"}(io))задает формат напрямую; формат изqueryигнорируется. -
load(f; options...)передает именованные аргументы в метод загрузки.
#
FileIO.loadstreaming — Function
Некоторые пакеты могут реализовывать API потоковой передачи, позволяющий записывать и обрабатывать содержимое файла по частям, а не сразу. При считывании из таких высокоуровневых потоков должен возвращаться форматированный объект, например изображение либо фрагмент видео или аудио.
-
loadstreaming(filename)загружает содержимое форматированного файла, пытаясь вывести формат изfilenameи (или) магических байтов в файле. Возвращает тип потока, из которого можно считывать данные по частям, а не загружать все содержимое сразу. -
loadstreaming(strm)загружает поток изIOStreamили аналогичного объекта. В данном случае расширения имени файла нет, поэтому формат распознается на основе магических байтов. -
loadstreaming(File{format"WAV"}(filename))задает формат напрямую; формат изqueryигнорируется. -
loadstreaming(Stream{format"WAV"}(io))задает формат напрямую; формат изqueryигнорируется. -
loadstreaming(f; options...)передает именованные аргументы в метод загрузки.
#
FileIO.magic — Method
magic(fmt): возвращает магические байты формата fmt.
#
FileIO.query — Function
query(io, [filename]) возвращает объект Stream с информацией о формате, выведенном на основе магических байтов.
#
FileIO.query — Method
query(filename; checkfile=true)
Возвращает объект File с информацией о формате, выведенном на основе расширения имени файла и (или) магических байтов. Если filename уже существует, магические байты файла имеют приоритет, кроме случая, когда аргумент checkfile имеет значение false.
#
FileIO.save — Function
-
save(filename, data...)сохраняет содержимое форматированного файла, пытаясь вывести формат изfilename. -
save(Stream{format"PNG"}(io), data...)задает формат напрямую; формат изqueryигнорируется. -
save(File{format"PNG"}(filename), data...)задает формат напрямую; формат изqueryигнорируется. -
save(f, data...; options...)передает именованные аргументы в метод сохранения.
#
FileIO.savestreaming — Function
Некоторые пакеты могут реализовывать API потоковой передачи, позволяющий записывать содержимое файла по частям, а не сразу. Такие высокоуровневые потоки должны принимать форматированные объекты, например изображение либо фрагмент видео или аудио.
-
savestreaming(filename, data...)сохраняет содержимое форматированного файла, пытаясь вывести формат изfilename. -
savestreaming(File{format"WAV"}(filename))задает формат напрямую; формат изqueryигнорируется. -
savestreaming(Stream{format"WAV"}(io))задает формат напрямую; формат изqueryигнорируется. -
savestreaming(f, data...; options...)передает именованные аргументы в метод сохранения.
#
FileIO.skipmagic — Method
skipmagic(s::Stream): устанавливает позицию в s сразу после магических байтов. Для обычного объекта IO можно использовать skipmagic(io, fmt).
#
FileIO.unknown — Method
unknown(f) возвращает true, если формат f неизвестен.