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