Skip to content

Latest commit

 

History

History
42 lines (27 loc) · 3.49 KB

File metadata and controls

42 lines (27 loc) · 3.49 KB
Интерфейс FileLoader

Интерфейс FileLoader предоставляет единый набор методов для работы с файловым хранилищем как на уровне Middleware, так и на клиентском уровне. Загрузка и выгрузка данных осуществляется с помощью потоков:

  • saveStream() – сохраняет содержимое потока InputStream в хранилище.

  • openStream() – возвращает входной поток для выгрузки содержимого файла из хранилища.

Tip

И на клиентской и на серверной стороне FileLoader работает по общему принципу: передача файлов осуществляется путём копирования данных между потоками ввода-вывода. Файлы никогда не загружаются в память целиком ни на каком уровне приложения, что позволяет передавать файлы практически любого размера.

В качестве примера использования FileLoader представим, что нам нужно сохранять текст, введённый пользователем, в текстовый файл и отображать содержимое этого файла в другом поле на том же экране.

Экран содержит два поля textArea. Пользователь вводит текст в первое поле textArea, затем нажимает на кнопку buttonIn, и текст сохраняется в хранилище FileStorage. Второе поле будет отображать содержимое сохраненного файла по нажатию кнопки buttonOut.

Ниже представлен фрагмент XML-дескриптора экрана:

link:../../../../../source/features/fileLoader_1.xml[role=include]

Контроллер экрана содержит два метода, вызываемых при нажатии кнопок под текстовыми полями:

  • В методе onButtonInClick() мы создаём байтовый массив из ввода в первом текстовом поле. Затем создаём объект FileDescriptor и с помощью его атрибутов указываем имя нового файла, его расширение, размер и дату создания.

    После этого мы сохраняем новый файл методом saveStream() интерфейса FileLoader, передав в него объект FileDescriptor и содержимое файла с поставщиком InputStream. Также делаем коммит объекта FileDescriptor в data store с помощью интерфейса DataManager.

  • В методе onButtonOutClick() мы получаем содержимое сохранённого файла методом openStream() интерфейса FileLoader. Затем отображаем содержимое во втором поле textArea.

link:../../../../../source/features/fileLoader_1.java[role=include]
fileLoader recipe