C# - 按字符读取外部CSV文件字符

use*_*142 1 .net c# file stream

在C#中逐个字符读取文件的最简单方法是什么?

目前,我通过调用System.io.file.ReadLine()逐行阅读.我看到有一个Read()函数,但它没有;返回一个字符...

我还想知道如何使用这种方法检测一行的结尾...有问题的输入文件是一个CSV文件....

Jon*_*eet 5

打开一个TextReader(例如,通过File.OpenText- 注意这File是一个静态类,所以你不能创建它的实例)并重复调用Read.返回int而不是char它也可以指示文件结束:

int readResult = reader.Read();
if (readResult != -1)
{
    char nextChar = (char) readResult;
    // ...
}
Run Code Online (Sandbox Code Playgroud)

或循环:

int readResult;
while ((readResult = reader.Read()) != -1)
{
    char nextChar = (char) readResult;
    // ...
}
Run Code Online (Sandbox Code Playgroud)

或者更加时髦的善良:

public static IEnumerable<char> ReadCharacters(string filename)
{
    using (var reader = File.OpenText(filename))
    {
        int readResult;
        while ((readResult = reader.Read()) != -1)
        {
            yield return (char) readResult;
        }
    }
}

...

foreach (char c in ReadCharacters("foo.txt"))
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

请注意,默认情况下,File.OpenText都将使用UTF-8编码.如果不是您想要的,请明确指定编码.

编辑:要找到一行的结尾,你要检查字符是否\n......你可能也想要\r特别处理,如果这是一个Windows文本文件.

但如果你想要每一条线,为什么不直接打电话ReadLine?您可以随后迭代该行中的字符...