Сбрасывает все промежуточные буферы и производит запись всех незаписанных данных в целевое устройство.
Синтаксис
СброситьБуферы()Полное описание, параметры и ограничения
Поток.СброситьБуферы (Stream.Flush)
Поток (Stream)
СброситьБуферы (Flush)
Доступен, начиная с версии 8.3.9.
Синтаксис:
СброситьБуферы()
Описание:
Сбрасывает все промежуточные буферы и производит запись всех незаписанных данных в целевое устройство.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер, интеграция.
См. также:
Поток, метод НачатьСбросБуферов
Поток, метод СброситьБуферыАсинх
Использование в версии:
Доступен, начиная с версии 8.3.9.
Описание изменено в версии 8.3.18.
Методическая информация
Практические примеры
Проверить сброс буферов без обещания записи readonly-потока
СбросБуферов не превращает readonly-доступ в записывающий. На собственных данных результат вызова диагностируем отдельно от доступности записи.
Где и как запускать
Серверная процедура учебной базы; собственные двоичные данные в памяти, без файлов.
Подготовка
Используйте отдельную учебную базу. Фрагмент без директив вставьте в тело серверной процедуры ВыполнитьПример() Экспорт общего модуля УчебныеЗадачи.
Все исходные байты создаются самим примером в памяти. Файлы, сеть, справочники и документы не нужны.
Запускайте задачи отдельно. После закрытия ЧтениеДанных/ЗаписьДанных не используйте этот экземпляр повторно.
Данные = ПолучитьДвоичныеДанныеИзСтроки("ABC123", КодировкаТекста.UTF8, Ложь);
Поток = Данные.ОткрытьПотокДляЧтения();
Вид = Неопределено;
Копия = Неопределено;
Попытка
Сообщить(Не Поток.ДоступнаЗапись);
ПозицияДо = Поток.ТекущаяПозиция();
Попытка
Поток.СброситьБуферы();
Сообщить("Сброс буферов завершён для этого потока");
Исключение
Сообщить("Сброс недоступен этому readonly-потоку: " + ОписаниеОшибки());
КонецПопытки;
Сообщить(Не Поток.ДоступнаЗапись);
Сообщить(Поток.ТекущаяПозиция() = ПозицияДо);
Сообщить(Поток.Размер() = 6);
Исключение
Если Вид <> Неопределено Тогда
Вид.Закрыть();
КонецЕсли;
Если Копия <> Неопределено Тогда
Копия.Закрыть();
КонецЕсли;
Поток.Закрыть();
ВызватьИсключение;
КонецПопытки;
Если Вид <> Неопределено Тогда
Вид.Закрыть();
КонецЕсли;
Если Копия <> Неопределено Тогда
Копия.Закрыть();
КонецЕсли;
Поток.Закрыть();Разбор по шагам
Читаем признак записи до вызова и сохраняем текущую позицию.
Сброс может быть бессмысленной операцией для источника в памяти; завершение/ограничение показываем разными сообщениями.
Независимо от разрешённого исхода сброса readonly-поток не получает право записи и не изменяет шесть исходных байтов.
Как проверить результат
Четыре сравнения Истина: readonly до/после, прежняя позиция и размер 6.
При отказе выводится реальная ошибка; такой исход не назван успешным сбросом.
Ожидаемый результат
Разделены завершение буферизации и возможность изменения данных.
На что обратить внимание
Это не принудительное сохранение неизменяемых данных на диск: дискового файла вообще нет.
Справка описывает общую операцию, но не обещает записывающий буфер у любого конкретного readonly-источника.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.