我正在创建一个程序,可以将不同的文件类型转换为pdf。
创建从.txt
到.pdf
到System.IO.File.ReadAllLines()
的转换器之后
我意识到我可以为.csv
使用相同的转换器,这使我想知道由于ReadAllLines
方法我在理论上还可以支持其他文件类型。
答案 0 :(得分:5)
由于ReadAllLines()
以文本形式读取行,因此可以将其用于任何基于文本的文件类型。此类别中没有文件的“类型”的完整列表(一直在发明新的文件类型),但其中大多数可能将成为打算用作代码的文件(.cs
,{{1 }}等),或作为结构化数据,通常用于在应用程序之间传输数据(.java
,.xml
等)。
从理论上讲,您可以为其他(二进制)文件调用该方法,但最终会遇到一堆无用的gobbledegook。
答案 1 :(得分:2)
说ReadAllLines()只是简单地尝试将文件读取为文本,这可能会造成混淆,因为关于我们所说的“读取为文本”的含义可能会引起另一个问题。此外,它也尝试检测编码...因此,我们避免回答这种方式...
“支持哪些类型?”问题的简短答案。很简单:
任何类型
原因:
无论文件是文本文件,还是二进制文件。此方法所做的只是读取字节,直到找到换行符或回车符('\ r','\ n','\ r \ n')为止。
一旦找到任何内容,就假定之前的所有内容都是一行,然后通过寻找下一个换行符继续读取文件。
因此,如果您使用的是csv -s,原因是相同的。该csv文件内部有换行符。此外,即使在具有二进制文件的情况下,此函数也将返回结果(尽管可能没有用),只是因为它在其中发现了一些换行符或回车符。如果否,那么它将以单项字符串数组的形式返回整个二进制数据。
Here是文档中的一些详细信息,以防万一:
此方法打开一个文件,读取文件的每一行,然后添加每一行 行作为字符串数组的元素。然后关闭文件。一条线 定义为字符序列,后跟回车符 ('\ r'),换行('\ n')或回车符 通过换行。结果字符串不包含终止符 回车和/或换行符。
此方法尝试自动检测文件的编码 基于字节顺序标记的存在。编码格式为UTF-8和 可以检测到UTF-32(大端和小端)。