filestream文件末尾的字符是什么?

Sma*_*EGA 13 .net c# asp.net string

我在while循环中搜索特定字符以检查它是否到达文件末尾.

我可以搜索哪个角色?

例如:

Indexof('/n')  end of line
Indexof(' ') end of word
???? ---------- end of file??
Run Code Online (Sandbox Code Playgroud)

Mit*_*eat 16

当Stream.Read返回零时,到达Stream的结尾.

来自MSDN,FileStream的示例:

// Open a stream and read it back.
using (FileStream fs = File.OpenRead(path))
{
    byte[] b = new byte[1024];
    UTF8Encoding temp = new UTF8Encoding(true);
    while (fs.Read(b,0,b.Length) > 0)
    {
        Console.WriteLine(temp.GetString(b));
    }
}
Run Code Online (Sandbox Code Playgroud)

要么,

using (StreamReader sr = File.OpenText(filepath))
{
     string line;
     while ((line = sr.ReadLine()) != null)
     {
          // Do something with line...
          lineCount++;
     }
}
Run Code Online (Sandbox Code Playgroud)


ani*_*haw 6

也许你正在寻找的是这个

using (StreamReader sr = new StreamReader("TestFile.txt"))
{
    String line;
    while ((line = sr.ReadLine()) != null)
    {
         Console.WriteLine(line);
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 6

当FileStream返回0时,并不意味着您已到达文件末尾.我有过这样的经历.

从MSDN:读入缓冲区的总字节数.如果该字节数当前不可用,则可能小于请求的字节数,如果到达流的末尾,则可能小于零.

这种情况发生在像thumbdrive这样的慢速设备上.


Sam*_*eff 5

没有 EOF 字符。FileStream.Read循环调用。当.Read()没有读取字节返回 0 时,您就完成了。

文档对这种行为非常清楚。

http://msdn.microsoft.com/en-us/library/system.io.filestream.read.aspx

Read 方法仅在到达流末尾后才返回零。否则, Read 在返回之前总是从流中读取至少一个字节。如果调用 Read 时流中没有可用数据,则该方法将阻塞,直到可以返回至少一个字节的数据。即使尚未到达流的末尾,实现也可以自由地返回比请求少的字节。