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