.net 数据流读写方法 FileStream StreamWrite BinaryWirte 的使用 及速度的对比

在进行比较大的数据库文件的读取与写入是 往往读取或写入的时间特别长 影响到客户的使用心情 这样的话就必须提高读写数据的效率 。要是比较小的文件那就没有必要了

本文主要是测试三种方法在读写数据时的效率  及个方法的优缺点 。

在新建窗体上 添加一个button  两个文本  textBox1   textBox2   分别记录开始读入数据 以及写入完成数据的时间

           //————————————————————StreamWrite ——————————————————————————

                //获取当前的时间

                currentTime = System.DateTime.Now;

                //获取当前时间的秒并用文本框记录当前的时间     也可以设置按秒来计算  
                int second = currentTime.Second;
                textBox1.Text = second.ToString();
                //实例化读取fs(源文件) 写出fs2(新文件)的文件流

                FileStream fs2 = new FileStream(@"D:\3.txt", FileMode.Create);
                FileStream fs = new FileStream(@"D:\1.txt", FileMode.Open);

                   //实例化一个数组用来存储读取fs 的数据流
                   byte[] data = new byte[1024];
                   fs.Read(data, 0, data.Length);
                //实例化一个StreamWriter-->与fs相关联
                StreamWriter sw = new StreamWriter(fs2);
                //开始写入
                string str = Encoding.ASCII.GetString(data);

                while (fs.Read(data, 0, data.Length) > 0)
                {
                    sw.Write(str, 0, data.Length);
                    sw.Flush();s
                }s
               // sw.Write(str , 0, data.Length);
                //清空缓冲区
                //sw.Flush();
                //关闭流
                sw.Close();
                fs.Close();
                currentTime = System.DateTime.sNow;
                int second2 = currentTime.Second;
                textBox2.Text = second2.ToString();

//————————————————FileStream————————————————————————————

          currentTime = System.DateTime.Now;
            int second  =currentTime.Second;
            textBox1.Text = second.ToString();

 

               //实例化读取fs(源文件) 写出fs2(新文件)的文件流 

            FileStream fs = new FileStream(@"D:\1.txt", FileMode.Open);
            FileStream fs2 = new FileStream(@"D:\2.txt", FileMode.Create);
            //创建数组用来存储读进来的数据流                      

              byte[] data = new byte[1024];
            //创建两个缓冲流,用来存储读入写出的数据流
            BufferedStream bs = new BufferedStream(fs);
            BufferedStream bs2 = new BufferedStream(fs2);
            //fs读,fs2写,同事进行 当fs没有字节可读fs2停止写入                       

                 while (fs.Read(data, 0, data.Length) > 0)
            {
                fs2.Write(data, 0, data.Length);
                fs2.Flush();
            }
            ////关闭流..
            fs.Close();
            fs2.Close();
            currentTime = System.DateTime.Now;
            textBox2.Text = currentTime.Second.ToString();

//——————————————————————————BinaryWirte——————————————————————

 

posted @ 2011-09-30 16:45  思@源  阅读(676)  评论(0)    收藏  举报