今天维护一个软件,发现如下的代码:
private byte[] readDataBin(string filename)
{
FileStream fs= new FileStream(filename, FileMode.Open, FileAccess.Read);
byte[] bytesToRead = new byte[fs.Length];
BinaryReader br = new BinaryReader(fs);
for (int i = 0; i < fs.length; i++)
{
bytesToRead[i] = br.ReadByte();
}
br.Close();
fs.Close();
return bytesToRead;
}
上述代码运行不会出错,但是如果文件稍微大点就非常非常的慢,查了下msdn,将for循环去掉,改成如下一句话:
bytesToRead = br.ReadBytes((int)(fs.length));
测试了一下,同样的文件读出来比原来快了数十倍。
private byte[] readDataBin(string filename)
{
FileStream fs= new FileStream(filename, FileMode.Open, FileAccess.Read);
byte[] bytesToRead = new byte[fs.Length];
BinaryReader br = new BinaryReader(fs);
for (int i = 0; i < fs.length; i++)
{
bytesToRead[i] = br.ReadByte();
}
br.Close();
fs.Close();
return bytesToRead;
}
上述代码运行不会出错,但是如果文件稍微大点就非常非常的慢,查了下msdn,将for循环去掉,改成如下一句话:
bytesToRead = br.ReadBytes((int)(fs.length));
测试了一下,同样的文件读出来比原来快了数十倍。