我有一个包含“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();
}
}
答案 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)(大于)