【winfrom】读写文本

//Stream 字节序列的一般视图 读取 写入 查找
// 抽象类
//TextWriter(Reader) TextReader 读取连续字符系列的读取器 StreamWriter,StringWriter StreamReader

//StreamWriter(Reader) IDispose
//using(.....) 默认编码 utf8

//FileStream 文件流 字节

//File FileInfo

 //读取
        private void button1_Click(object sender, EventArgs e)
        {
            using (StreamReader sr = new StreamReader("mytext.txt"))
            {
                Console.WriteLine(sr.ReadToEnd());
                string line = "";
                while ((line = sr.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                }


                //    //char[] buffer;
                //    //buffer =new char[(int)sr.BaseStream.Length];
                //    //sr.Read(buffer, 0, (int)sr.BaseStream.Length);
                //    //Console.WriteLine(new string(buffer));
            }
            //文本复制到另一个文件里

            char[] buffer;
            using (StreamReader sr = new StreamReader("mytext.txt"))
            {
                Encoding en = sr.CurrentEncoding;
                using (StreamWriter sw = new StreamWriter("mytextto.txt"))
                {
                    //char[] buffer;
                    //int count=(int)sr.BaseStream.Length;
                    //buffer = new char[count];
                    //sr.Read(buffer, 0, count);
                    //Task.Run(()=>sw.WriteAsync(buffer, 0, count));
                    Encoding enw = sw.Encoding;
                    buffer = new char[20];
                    while (true)
                    {
                        int r = sr.Read(buffer, 0, 20);
                        if (r == 0) break;
                        sw.Write(buffer, 0, 20);
                    }
                }
            }

        }

  //写入 

 {
            using (TextWriter tw = new StreamWriter("mytext.txt", false))
            {
                tw.Write("sssssssssssss");
                //tw.Flush();
                tw.Write("ddddddddddd");//不换行
                tw.Write(tw.NewLine);//换行符
                //tw.Flush();

                tw.WriteLine("cccccccccccccc");//写入,换行
                tw.WriteLine("eeeeeeeeeeeee");
                //Task t = tw.WriteAsync("ffffffffff");
                tw.Flush();//清理缓冲区,把缓冲区的数据写入基础 设备
                tw.Close();
            }


        }

  

 private void button2_Click(object sender, EventArgs e)
        {
            //using(FileStream fs=new FileStream("mytext.txt",FileMode.Open,FileAccess.Read))
            //{
            //    using(FileStream fs1=new FileStream("mytextto.txt",FileMode.OpenOrCreate,FileAccess.Write))//Append  FileAccess.Write
            //    {
            //        byte[] buffer = new byte[1024*1024*5];
            //        while(true)
            //        {
            //           int r = fs.Read(buffer, 0, buffer.Length);
            //           if (r > 0)
            //               fs1.Write(buffer, 0, r);
            //           if (r < buffer.Length) break;
            //        }
            //    }
            //}

            using (FileStream fs = new FileStream("第一节DataSet与DataTable1.exe", FileMode.Open, FileAccess.Read))
            {
                using (FileStream fs1 = new FileStream("D:/第一节DataSet与DataTable2.exe", FileMode.OpenOrCreate, FileAccess.Write))//Append  FileAccess.Write
                {
                    byte[] buffer = new byte[1024 * 1024 * 5];
                    while (true)
                    {
                        int r = fs.Read(buffer, 0, buffer.Length);
                        if (r > 0)
                            fs1.Write(buffer, 0, r);
                        if (r < buffer.Length) break;
                    }
                }
            }

        }

  

private FileStream readFs;
        private FileStream writeFs;
        private int busize = 1024 * 1024 * 5;
        private byte[] buffer;

  //异步读写文件

 private void button4_Click(object sender, EventArgs e)
        {
            buffer = new byte[busize];
            ReadFileAsync("第一节DataSet与DataTable1.exe");

        }

   //异步读取

 private void ReadFileAsync(string fName)
        {
            readFs = new FileStream(fName, FileMode.Open, FileAccess.Read, FileShare.Read, busize, true);

            IAsyncResult iResult = readFs.BeginRead(buffer, 0, buffer.Length, OnCompleteRead, null);


        }
        object lockbu = new object();

   //异步读的回调

 private void OnCompleteRead(IAsyncResult iResult)
        {
            int byteCount = readFs.EndRead(iResult);
            if (byteCount > 0)
            {
                //写读取到的长度
                WriteFileAsync("D:/第一节DataSet与DataTable2.exe", byteCount);


                if (byteCount < busize)
                    readFs.Close();
                else

                    readFs.BeginRead(buffer, 0, busize, OnCompleteRead, null);


            }
            else
                readFs.Close();
        }

   //异步写

 private void WriteFileAsync(string fName, int count)
        {
            writeFs = new FileStream(fName, FileMode.Append, FileAccess.Write, FileShare.None, count, true);
            writeFs.BeginWrite(buffer, 0, count, OnCompleteWrite, null);
            writeFs.Close();
        }

  //异步写的回调

 private void OnCompleteWrite(IAsyncResult iResult)
        {
            writeFs.EndWrite(iResult);
        }

  

posted @ 2018-03-26 09:00  Microera  阅读(258)  评论(0)    收藏  举报