Какие типы файлов можно использовать System.IO.File.ReadAllLines () - PullRequest
0 голосов
/ 22 октября 2018

Я создаю программу, которая может конвертировать файлы различных типов в PDF.

После создания конвертера .txt в .pdf, который использует System.IO.File.ReadAllLines()

, я понял, что могу использовать тот же самый конвертер для .csv, что заставило меня задуматься, какой другой файлтипы, которые я теоретически мог поддерживать из-за подхода ReadAllLines.

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Сказать, что ReadAllLines () просто пытается прочитать файл, так как текст может сбить с толку, так как может возникнуть другой вопрос о том, что мы подразумеваем под словом «читать как текст».Более того, он также пытается обнаружить кодирование ... Итак, давайте не будем так отвечать ...

Краткий ответ на вопрос "Какие типы поддерживаются?"прост:
Любой тип

Причина:
Независимо от того, является ли файл текстовым или даже двоичным.Этот метод просто читает байты, пока не найдет символы перевода строки или возврата каретки ('\ r', '\ n', '\ r \ n').И как только он найдет что-либо, он предполагает, что весь материал до этого был строкой, а затем продолжает чтение файла, ища следующий разрыв строки.

Так что в случае csv-s, который работал на вашемсторона причина та же.Этот CSV-файл имел разрывы строк внутри.Более того, даже в случае наличия двоичного файла, эта функция будет возвращать результат (хотя это может быть довольно бесполезно) только потому, что она нашла некоторые разрывы строк или символы возврата каретки внутри него.Если нет - тогда он возвращает целые двоичные данные в виде массива строк из одного элемента.

Здесь некоторые дополнительные сведения взяты из документации на тот случай, если это необходимо:

Этот метод открывает файл, читает каждую строку файла, а затем добавляет каждую строку как элемент массива строк.Затем он закрывает файл.Строка определяется как последовательность символов, за которой следует возврат каретки ('\ r'), перевод строки ('\ n') или возврат каретки, за которым сразу следует перевод строки.Результирующая строка не содержит завершающего возврата каретки и / или перевода строки.

Этот метод пытается автоматически определить кодировку файла на основе наличия меток порядка байтов.Можно определить форматы кодирования UTF-8 и UTF-32 (как с прямым порядком байтов, так и с прямым порядком байтов).

0 голосов
/ 22 октября 2018

Поскольку ReadAllLines() читает строки как текст, вы можете использовать его для любого текстового типа файла.В этой категории нет исчерпывающего списка «типов» файлов (новые типы файлов изобретаются постоянно), но большинство из них, вероятно, будут файлами, предназначенными для использования в качестве кода (.cs, .java и т. Д..) или в виде структурированных данных, которые часто используются для передачи данных между приложениями (.xml, .json и т. д.).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...