用C#读取一个exe文件,然后将这个文件以二进制代码的形式显示在一个TextBox里面,但是读取速度很慢,求思路
FileStreamfs=newFileStream(path,FileMode.Open);BinaryStreamsr=newStreamReader(fs);whi...
FileStream fs = new FileStream(path, FileMode.Open);
BinaryStream sr = new StreamReader(fs);
while (sr.BaseStream.Position<sr.BaseStream.Length)
{
textBox1.Text+= Convert.ToString(sr.ReadChar(),2);
}
sr.Close();
fs.Close();
这个是源码,我是通过多线程来处理的,可以实现,但是速度实在是太慢了,我用win7系统自带的记事本程序做实验,结果读取了几十分钟还没有读取完,求大神给个思路!!! 展开
BinaryStream sr = new StreamReader(fs);
while (sr.BaseStream.Position<sr.BaseStream.Length)
{
textBox1.Text+= Convert.ToString(sr.ReadChar(),2);
}
sr.Close();
fs.Close();
这个是源码,我是通过多线程来处理的,可以实现,但是速度实在是太慢了,我用win7系统自带的记事本程序做实验,结果读取了几十分钟还没有读取完,求大神给个思路!!! 展开
2个回答
展开全部
while (sr.BaseStream.Position<sr.BaseStream.Length)
{
textBox1.Text+= Convert.ToString(sr.ReadChar(),2);
}
这种方式肯定会很慢的,每次读取一个字节。对于一个1M的文件,就需要读取100万次。
使用 ReadBytes 方法,一次读取进来。
如果文件很大,可以每次读取一定大小的字节。
{
textBox1.Text+= Convert.ToString(sr.ReadChar(),2);
}
这种方式肯定会很慢的,每次读取一个字节。对于一个1M的文件,就需要读取100万次。
使用 ReadBytes 方法,一次读取进来。
如果文件很大,可以每次读取一定大小的字节。
追问
嗯,我想到过,如果我一次性读取到一个数组里面然后再往TextBox控件上输出的时候,就变的很慢!
追答
FileStream fs = new FileStream(path, FileMode.Open);
byte[] bytes =new byte[fs.Length];
fs.Read(bytes, 0, (int)fs.Length);
textBox1.Text=bytes.ToString();
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询