Filestream只读取文件的前4个字符

时间:2011-05-03 00:08:54

标签: c# file io

嘿那里!我正在尝试使用文件流读取150mb文件,但每次执行此操作时,我得到的是:|zl而不是整个流。请注意,它中有一些特殊字符。

有人知道问题是什么吗?这是我的代码:

using (FileStream fs = File.OpenRead(path))
{
    byte[] buffer = new byte[fs.Length];
    fs.Read(buffer, 0, buffer.Length);
    extract = Encoding.Default.GetString(buffer);
}

编辑:
我试图读取所有文本,但它仍然返回相同的四个字符。它可以在任何其他文件上正常工作,除了这几个。当我使用read all行时,它只获得第一行。

2 个答案:

答案 0 :(得分:8)

fs.Read()不会同时读取整个字节数,它读取一些字节数并返回读取的字节数。 MSDN有一个很好的例子,说明如何使用它来获取整个文件:

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

对于它的价值,将整个150MB的数据读入内存实际上会耗尽您客户的系统 - 首选的选择是优化它,这样您就不需要一次性处理整个文件

答案 1 :(得分:2)

如果你想以这种方式阅读文本File.ReadAllLine(或ReadAllText) - http://msdn.microsoft.com/en-us/library/s2tte0y1.aspx是更好的选择。

我猜这个文件不是文本文件,显示结果字符串的方式是0字符。

正如debracey所指出的,Read返回读取的字节数 - 检查出来。同样对于文件操作,它不可能停留在4个字符......