c#文件流基本操作FileStream及拷贝大文件

文件流基本操作FileStream

FileStream fs = File.Open(@"c:\1.txt", FileMode.Write);

//创建一个只读的文件流!

FileStream fs1 = File.OpenRead("1.txt");

//创建一个只写的文件流

FileStream fs2 = File.OpenWrite("1.txt");

//流是通过byte字节来实现的

fs.Write(byte数组,偏移量,要写入的字节数);

//

string s1 = "aaaaaaaaa"

//写入流,先将s1转换为byte数组

byte [] byts = System.Text.Enconding.UTF8.GetBytes(s1);

fs.Flush();//清空缓冲区

fs.Close();//关闭文件流

fs.Dispose;//释放非托管支援


另外一种创建流的方法

using(FileStream fs = File.Open(@"c:\1.txt", FileMode.OpenOrCreate)

{

   fs.Write(byts,0,byts.Length);

}

using(FileStream fs = File.Open(@"c:\1.txt", FileMode.Open)

{

   byte [] byts = new byte [1024 * 1024];//每次读取1M

   //byts 将读取出来的流字节保存到数组内

   //byts.Length 本次最多读取字节数

   int r = fs.Read(byts,0,byts.Length);//本次实际读取到字节的个数

   //转换为字符串

   string s1 = System.Text.Enconding.UTF8.GetString(byts);

}

//获取当前流的字节树

int readLen = (int)fsRead.Length;


拷贝大文件

1,定义源文件和目标文件,绝对路径

2,设置读取方法,参数是源文件和目标文件

3,实现文件

1)读

2)创建文件流

3)循环读取文件流

4)创建写入流

5)写入文件


//定义源文件和目标文件,绝对路径

string source = "";

string target = "";

CopyBigFile(source, target);


//方法

      //3,实现文件

       /// <summary>

       /// 拷贝大文件

       /// </summary>

       /// <param name="source">原绝对路径</param>

       /// <param name="target">新绝对路径</param>

       private static void CopyBigFile(string source, string target)

       {

           //1)读

           //2)创建文件流

           using (FileStream fsRead = new FileStream(source, FileMode.Open))

           {

               //4)创建写入流

               using (FileStream fsWrite = new FileStream(target, FileMode.Create))

               {

                   //缓冲区

                   byte[] byts = new byte[1024 * 1024 * 18];

                   //3)循环读取文件流

                   while (true)

                   {

                       int r = fsRead.Read(byts, 0, byts.Length);

                       if (r <= 0)

                       {

                           break;

                       }

                       //5)写入文件

                       fsWrite.Write(byts, 0, byts.Length);

                   }

               }

           }

       }

 

posted @ 2014-01-24 14:24  Net-Spider  阅读(986)  评论(0)    收藏  举报