哪些文件类型可以使用 System.IO.File.ReadAllLines()

What file types can use System.IO.File.ReadAllLines()

我正在创建一个可以将不同文件类型转换为 pdf 的程序。

创建 .txt.pdf 转换器后,使用 System.IO.File.ReadAllLines()

我意识到我可以为 .csv 使用相同的转换器,这让我想知道由于 ReadAllLines 方法我理论上可以支持哪些其他文件类型。

由于 ReadAllLines() 将行读取为文本,您可以将其用于任何基于文本的文件类型。此类别中没有完整的 "types" 文件列表(新文件类型一直在发明),但其中大部分可能是用作代码的文件(.cs.java,等等),或者作为经常用于在应用程序之间传输数据的结构化数据(.xml.json,等等)。

理论上您可以为其他(二进制)文件调用该方法,但您最终会得到一堆无用的官样文章。

ReadAllLines() 只是尝试将文件作为文本读取可能会造成混淆,因为另一个问题可能会引起我们说 "read as text" 的意思。此外,它还尝试检测编码...所以,让我们避免以这种方式回答...

"What types are supported?"问题的简答很简单:
任何类型

原因:
无论文件是文本文件还是二进制文件。此方法所做的只是简单地读取字节,直到找到换行符或回车 return 字符('\r'、'\n'、'\r\n')。 一旦找到任何内容,就会假设之前的所有内容都是一行,然后通过寻找下一个换行符继续读取文件。

因此,如果 csv-s 在您这边有效,原因是相同的。该 csv 文件内部有换行符。此外,即使在二进制文件的情况下,此函数也会 return 结果(尽管它可能非常无用)只是因为它在其中发现了一些换行符或回车 return 字符。如果不是 - 那么它将 return 整个二进制数据作为一个字符串的单项数组。

Here 是从文档中获取的更多详细信息,以备不时之需:

This method opens a file, reads each line of the file, then adds each line as an element of a string array. It then closes the file. A line is defined as a sequence of characters followed by a carriage return ('\r'), a line feed ('\n'), or a carriage return immediately followed by a line feed. The resulting string does not contain the terminating carriage return and/or line feed.

This method attempts to automatically detect the encoding of a file based on the presence of byte order marks. Encoding formats UTF-8 and UTF-32 (both big-endian and little-endian) can be detected.