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

4
我正在创建一个程序,可以将不同的文件类型转换为pdf。
在创建了一个使用System.IO.File.ReadAllLines()的txt到pdf转换器之后,
我意识到我可以使用同样的转换器来处理csv,这让我想知道我可以基于ReadAllLines方法支持哪些其他文件类型。

2
你可以使用任何文本文件(有很多种),例如代码文件,如xml、html、JavaScript、css、rtf等。 - Poul Bak
2个回答

5
ReadAllLines()读取的是文本行,因此可以用于任何基于文本的文件类型。没有包括在此范畴内的"文件类型"的全面列表(新的文件类型一直在发明),但其中大部分可能会是用作代码的文件(如.cs.java等),或者是结构化数据文件,通常用于应用程序之间的数据传输(如.xml.json等)。
理论上你也可以为其他(二进制)文件调用该方法,但最终你将得到一堆无用的胡言乱语。

1
注意:在没有换行符的情况下(这是非常常见的情况),JSON和其他文本文件类型可能无法按预期工作。此时,您将会把整个文本/文件视为单行,这通常不是您想要的结果。有关更多详细信息,请参见此答案:https://dev59.com/tK_la4cB1Zd3GeqPqUbM#52933986 - Just Shadow

2
说ReadAllLines()只是尝试将文件读取为文本可能会令人困惑,因为另一个问题可能会引起我们对“读取为文本”含义的疑问。此外,它还尝试检测编码...因此,让我们避免用这种方式回答...
“What types are supported?”这个问题的简短答案很简单:任何类型。
原因:无论文件是文本文件还是二进制文件。此方法所做的就是读取字节,直到找到换行符或回车符('\r','\n','\r\n')。一旦找到任何一个,就假定所有在其之前的东西都是一行,然后通过寻找下一个换行符继续读取文件。
因此,在csv文件中工作的情况下,原因是相同的。该csv文件内有换行符。此外,即使是二进制文件,此函数也会返回结果(尽管可能非常无用),因为它在其中找到了一些换行符或回车符。如果没有,则会将整个二进制数据作为单个字符串数组项返回。
以下是一些从文档中提取的更多细节,以防需要:
该方法打开文件,读取文件的每一行,然后将每一行作为字符串数组的元素添加。然后关闭文件。行被定义为由回车符('\r')、换行符('\n')或紧随其后的回车符和换行符组成的字符序列。结果字符串不包含终止的回车符和/或换行符。
此方法尝试根据字节顺序标记的存在自动检测文件的编码。可以检测UTF-8和UTF-32(大端和小端)编码格式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接