Link Search Menu Expand Document

ЧтениеДанных

Стд::ВводВывод::ЧтениеДанных
Базовые типы: Объект

Иерархия типа

graph BT;
ЧтениеДанных-->Объект;

Предназначен для чтения данных из потока.

Сравнение ссылочное


Примеры

Построчное чтение текстового файла

строка1
строка2
строка3
метод ПрочитатьСтрокиИзФайла(): Массив<Строка>
    пер Строки: Массив<Строка>
    // Существующий файл text.txt в домашнем каталоге, откуда будет выполняться чтение строк
    знч Файл = новый Файл("text.txt", Файлы.ПолучитьДомашнийКаталог())
    
    // Поток чтения будет закрыт автоматически, так как объявлен через "исп"
    исп ПотокЧтения = Файл.ОткрытьПотокЧтения()
    знч ЧтениеДанных = новый ЧтениеДанных(ПотокЧтения)
    
    пока не ЧтениеДанных.ЧтениеЗавершено()
        // Чтение строки до разделителя по умолчанию
        знч Строка = ЧтениеДанных.ПрочитатьСтроку()
        Строки.Добавить(Строка)
    ;
    
    возврат Строки
;
[строка1, строка2, строка3]

Чтение двоичных данныx

метод ЗаписатьИПрочитатьДвоичныеДанные()
    знч Файл = новый Файл("data.bin", Файлы.ПолучитьДомашнийКаталог())
       
    // Поток записи в файл data.bin
    исп ПотокЗаписи = Файл.ОткрытьПотокЗаписи()
    знч ЗаписьДанных = новый ЗаписьДанных(ПотокЗаписи)
    
    ЗаписьДанных.ЗаписатьБайт(255)
    ЗаписьДанных.Записать(Байты{74657374}) // строка test, 4 байта
    ЗаписьДанных.ЗаписатьЦелое16(-32767)
    
    попытка
        ЗаписьДанных.ЗаписатьЦелое16(32768)
    поймать И: ИсключениеНедопустимыйАргумент
        // Значение числового параметра выходит за рамки диапазона допустимых значений
    ;
    
    ЗаписьДанных.ЗаписатьЦелое32(2147483647)
    ЗаписьДанных.ЗаписатьЦелое64(9223372036854775807)
    
    // Явное закрытие потока записи, чтобы далее прочитать данные
    ПотокЗаписи.Закрыть()

    // Поток чтения файла data.bin, будет закрыт автоматически, так как объявлен через "исп"
    исп ПотокЧтения = Файл.ОткрытьПотокЧтения()
    знч ЧтениеДанных = новый ЧтениеДанных(ПотокЧтения)
        
    пер Байт = ЧтениеДанных.ПрочитатьБайт() // 255
    пер Байты = ЧтениеДанных.Прочитать(4).ПолучитьБайты() // 74657374
    пер Целое16 = ЧтениеДанных.ПрочитатьЦелое16() // -32767
    пер Целое32 = ЧтениеДанных.ПрочитатьЦелое32() // 2147483647
    пер Целое64 = ЧтениеДанных.ПрочитатьЦелое64() // 9223372036854775807
;

Чтение текстового файла с разделителем

значение1;значение2;значение3
значение4;значение5;значение6

метод ПрочитатьФайлCsv(): Массив<Массив<Байты>>
    пер СтрокиБайты: Массив<Массив<Байты>>
	пер ЗначенияБайты: Массив<Байты>
    
    // Текстовый файл с разделителем, откуда будет выполняться чтение
    знч Файл = новый Файл("test.csv", Файлы.ПолучитьДомашнийКаталог())
       
    // Поток чтения будет закрыт автоматически, так как объявлен через "исп"
    исп ПотокЧтения = Файл.ОткрытьПотокЧтения()
    знч ЧтениеДанных = новый ЧтениеДанных(ПотокЧтения)
            
    // Количество столбцов в строке
    знч КоличествоСтолбцов = 3
    // Номер текущего столбца
    пер НомерСтолбца = 0
	
    пока не ЧтениеДанных.ЧтениеЗавершено()
        // Чтение сегмента данных до ";" или переноса строки
        знч РезультатЧтения = ЧтениеДанных.ПрочитатьДо([";", "\в\н"])
        НомерСтолбца += 1
        
        // Добавление байтов в буфер данных строки
        ЗначенияБайты.Добавить(РезультатЧтения.ПолучитьБайты())

        если НомерСтолбца == КоличествоСтолбцов
            // Добавление данных строки в результат
            СтрокиБайты.Добавить(новый Массив<Байты>(ЗначенияБайты))
            // Очистка буфера
            ЗначенияБайты.Очистить()
            // Очистка номера столбца, так как строка закончилась
            НомерСтолбца = 0
        ;
    ;
    
    возврат СтрокиБайты
;

Результат (байты представлены как строки):

[[значение1, значение2, значение3], [значение4, значение5, значение6]]

Конструкторы

ЧтениеДанных

ЧтениеДанных(Поток: ПотокЧтения)
Перегрузка:
ЧтениеДанных(Поток: ПотокЧтения, Настройки: НастройкиЧтенияДанных)

Конструктор чтения данных из потока Поток.


ЧтениеДанных

ЧтениеДанных(
  Поток: ПотокЧтения,
  Настройки: НастройкиЧтенияДанных)
Перегрузка:
ЧтениеДанных(Поток: ПотокЧтения)

Конструктор чтения данных из потока Поток с настройками Настройки.


Методы

Пропустить

Пропустить(Количество: Число? = Неопределено): Число

Пропускает при чтении указанное количество байтов Количество в потоке. Возвращает количество фактически пропущенных данных.


ПропуститьДо

ПропуститьДо(
  Маркер: Строка|ЧитаемыйМассив<Строка>,
  Кодировка: Кодировка|Строка|? = Неопределено
): Число

Пропускает при чтении двоичные данные до указанного маркера Маркер. Если кодировка Кодировка не задана, то используется из настроек. Возвращает количество фактически пропущенных данных.


Прочитать

Прочитать(Количество: Число? = Неопределено): РезультатЧтенияДанных

Выполняет чтение двоичных данных заданного размера Количество из потока в байты. Если размер не указан, будут прочитаны все данные до конца потока. Возвращает результат чтения.


ПрочитатьБайт

ПрочитатьБайт(): Число?

Выполняет чтение одного байта из потока данных. Возвращает прочитанный байт в виде числа. Если чтение не было выполнено по причине окончания данных в потоке, возвращается Неопределено.


ПрочитатьДо

ПрочитатьДо(
  Маркер: Строка|ЧитаемыйМассив<Строка>,
  Кодировка: Кодировка|Строка|? = Неопределено
): РезультатЧтенияДанных

Выполняет чтение двоичных данных до указанного маркера Маркер (или одного из маркеров) в потоке. Если кодировка Кодировка не задана, то используется из настроек. Возвращает результат чтения.


ПрочитатьСимволы

ПрочитатьСимволы(
  Количество: Число? = Неопределено,
  Кодировка: Кодировка|Строка|? = Неопределено
): Строка

Выполняет чтение заданного количества символов Количество из потока в виде строки в кодировке Кодировка. Если количество символов не задано или задано и превышает количество символов в потоке, выполняется чтение всего остатка потока.


ПрочитатьСтроку

ПрочитатьСтроку(
  Кодировка: Кодировка|Строка|? = Неопределено,
  РазделительСтрок: Строка|ЧитаемыйМассив<Строка>|? = Неопределено
): Строка

Выполняет чтение строки до разделителя строки РазделительСтрок в кодировке Кодировка. Если разделитель не найден, чтение выполняется до конца потока. Если кодировка или разделитель не заданы, то используются из настроек. Возвращает результат чтения.


ПрочитатьЦелое16

ПрочитатьЦелое16(ПорядокБайтов: ПорядокБайтов? = Неопределено): Число?

Считывает 16-битное целое число из потока. ПорядокБайтов - порядок байтов, используемый при чтении числа. Если не указан, то используется порядок байтов, указанный в настройках. Если чтение не было выполнено по причине окончания данных в потоке, возвращается Неопределено.


ПрочитатьЦелое32

ПрочитатьЦелое32(ПорядокБайтов: ПорядокБайтов? = Неопределено): Число?

Считывает 32-битное целое число из потока. ПорядокБайтов - порядок байтов, используемый при чтении числа. Если не указан, то используется порядок байтов, указанный в настройках. Если чтение не было выполнено по причине окончания данных в потоке, возвращается Неопределено.


ПрочитатьЦелое64

ПрочитатьЦелое64(ПорядокБайтов: ПорядокБайтов? = Неопределено): Число?

Считывает 64-битное целое число из потока. ПорядокБайтов - порядок байтов, используемый при чтении числа. Если не указан, то используется порядок байтов, указанный в настройках. Если чтение не было выполнено по причине окончания данных в потоке, возвращается Неопределено.


ЧтениеЗавершено

ЧтениеЗавершено(): Булево

Проверяет что во входном потоке больше нет данных для чтения.


Список унаследованных методов

Объект