文件流操作(FileStream,StreamReader,StreamWriter)

大文件拷贝:

 1 /// <summary>
 2         /// 大文件拷贝
 3         /// </summary>
 4         /// <param name="sSource"></param>
 5         /// <param name="sTarget"></param>
 6         private static void CopyFile(string sSource, string sTarget)
 7         {
 8             using (FileStream fsRead=new FileStream(sSource,FileMode.Open,FileAccess.Read))
 9             {
10                 using (FileStream fsWrite=new FileStream(sTarget,FileMode.Create,FileAccess.Write))
11                 {
12                     double n = (double)fsRead.Length;
13                     Stopwatch sw = new Stopwatch();
14 
15                     sw.Start();
16                     while (true)
17                     {
18                         //定义一个6MB的缓冲区
19                         byte[] buffer = new byte[6 * 1024 * 1024];
20                         int m = fsRead.Read(buffer, 0, buffer.Length);
21 
22                         if (m==0)
23                         {
24                             break;
25                         }
26                         else
27                         {
28                             fsWrite.Write(buffer, 0, m);
29                             double dl = Math.Round(((double)fsWrite.Position / n) * 100, 1);
30                             Console.WriteLine("总进度:{0}%", dl);
31                         }
32                     }
33                     sw.Stop();
34                     double iTime = Math.Round((double)sw.ElapsedMilliseconds / 1000, 2);
35                     Console.WriteLine("总运行时间:"+iTime+"");
36                 }
37             }
38         }
View Code

FileStream是对字节(byte)的操作,上面这种方法拷贝电影文件,大的压缩文件等没问题,但是对于文本文件多半使用后面2个类StreamReader,StreamWriter,

 1 #region 使用StreamWriter进行写
 2             using (StreamWriter sw = new StreamWriter(@"D:\demo.txt"))
 3             {
 4                 for (int i = 1; i <= 20; i++)
 5                 {
 6                     sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd") + "\t" + i.ToString());
 7                 }
 8             }
 9             Console.WriteLine("OK"); 
10             #endregion
View Code
 1 #region 使用StreamReader进行读
 2             using (StreamReader sr = new StreamReader(@"D:\demo.txt"))
 3             {
 4                 string s = sr.ReadLine();
 5                 while (!string.IsNullOrEmpty(s))
 6                 {
 7                     Console.WriteLine(s);
 8                     s = sr.ReadLine();
 9                 }
10             } 
11             #endregion
View Code

 

posted on 2015-05-28 21:34  chens2865  阅读(201)  评论(0编辑  收藏  举报

导航