为什么这个FileStream只返回零?

时间:2009-10-22 17:43:51

标签: c# filestream

我有一个包含“1234567”的文件(test.txt)。但是当我尝试使用FileStream.Read在C#上读取它时,我只得到0(在这种情况下为7个零)。谁能告诉我为什么?我真的迷失在这里。

编辑:问题解决了,错误的比较运算符。但现在它正在返回“49505152535455”

编辑2:完成。为了记录,我必须输出 byte 变量作为 char

using System;
using System.IO;

class Program
{
    static void Main()
    {

        FileStream fil = null;

        try
        {
            fil = new FileStream("test.txt", FileMode.Open,FileAccess.Read);

            byte[] bytes = new byte[fil.Length];
            int toRead = (int)fil.Length;
            int Read = 0;

            while (toRead < 0)
            {
                int n = fil.Read(bytes, Read, toRead);

                Read += n;
                toRead -= n;
            }

            //Tried this, will only return 0000000
            foreach (byte b in bytes)
            {
                Console.Write(b.ToString());
            }


        }
        catch (Exception exc)
        {
            Console.WriteLine("Oops! {0}", exc.Message);
        }
        finally
        {
            fil.Close();
        }


        Console.ReadLine();
    }
}

3 个答案:

答案 0 :(得分:2)

这一行

while (toRead < 0)

确保你从未真正阅读过。在循环之前,toRead将是&gt; = 0。

然后转储从未填充的字节数组。

答案 1 :(得分:2)

 foreach (byte b in bytes)
            {
                Console.Write(b.ToString());
            }

此代码不正确。它正在打印字节值的字符串值。即49为ascii char'0',50为'1'等等。

您需要将其输出为

Console.Write(new Char(b).toString());

答案 2 :(得分:1)

while(toRead&lt; 0)应该是while(toRead&gt; 0)(大于)