九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
VA18.2 數(shù)據(jù)流概述

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.IO;  //引入

namespace VA18.__數(shù)據(jù)流概述

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        private void Form1_Load(object sender, EventArgs e)

        {       

            //Stream 所有流的父類

            //FileStream fs = File.Open();        //返回 FileStream

            //FileStream fs = File.OpenRead();     //返回只讀的FileStream

            //FileStream fs = File.OpenWrite();      //返回只寫的FileStream

            //FileStream fs = new FileStream(參數(shù));  //返回 FileStream

        }

        #region 1.FileStream數(shù)據(jù)流讀取

        /// <summary>

        /// 1.FileStream數(shù)據(jù)流讀取

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void btnFileStreamRead_Click(object sender, EventArgs e)

        {

            //1將string轉(zhuǎn)byte數(shù)組轉(zhuǎn)換為一個字符串 

            string msg = "將一字符串轉(zhuǎn)為byte數(shù)組";

            byte[] bytes = System.Text.Encoding.UTF8.GetBytes(msg);

            string newmsg = System.Text.Encoding.UTF8.GetString(bytes);

            //第一種方法讀取

           // 2通過FileStream來讀文件

           //創(chuàng)建文件流

            using (FileStream fsRead = new FileStream(@"D:\桌面文件\新建文本文檔.txt", FileMode.OpenOrCreate, FileAccess.Read))

            {

                byte[] bytsRead = new byte[fsRead.Length];

                //讀取文件   fsRead.Length 小文件可以指定文件總字節(jié) 讀取到bytsRead數(shù)據(jù)中

                fsRead.Read(bytsRead, 0, bytsRead.Length);

                //將bytsRead數(shù)組轉(zhuǎn)換為字符串

                string msgRead = System.Text.Encoding.UTF8.GetString(bytsRead);

            }

            //第二種方法讀取

            //文件流的使用步驟

            string sql = "" ;

            byte[] bufferByte = new byte[100];

            char[] buffchar = new char[100];

            //1.創(chuàng)建文件流 

            FileStream fsReadWrite = new FileStream(@"D:\桌面文件\新建文本文檔.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);

            //2.使用文件,執(zhí)行讀操作

            fsReadWrite.Seek(0, SeekOrigin.Begin);   //從開始位置讀取

            fsReadWrite.Read(bufferByte, 0, 100);    //讀取文件字節(jié)

            Decoder dc = Encoding.UTF8.GetDecoder(); //解碼

            dc.GetChars(bufferByte, 0, bufferByte.Length, buffchar, 0);

            foreach (char str in buffchar)

            {

                 sql += str;

            }

            fsReadWrite.Dispose();

            MessageBox.Show("讀取" + sql.ToString());

        }

        #endregion

        #region 2.FileStream數(shù)據(jù)流寫入

        /// <summary>

        /// 2.FileStream數(shù)據(jù)流寫入

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void btnFileStreamWrite_Click(object sender, EventArgs e)

        {

            //第一種方法寫入

            // 1通過FileStream來寫文件

            //1.創(chuàng)建文件流

            FileStream fsWrite1 = new FileStream(@"D:\桌面文件\新建文本文檔.txt", FileMode.Create, FileAccess.Write);

            //2.使用文件流,執(zhí)行讀寫操作

            string msgf = "今天下雨了!";

            byte[] bytsWrite = System.Text.Encoding.UTF8.GetBytes(msgf);

            //寫入 參數(shù)1:表示將指定的字節(jié)數(shù)組中的內(nèi)容寫入文件 參數(shù)2:參數(shù)的數(shù)組的偏移量,一般為0 參數(shù)3:本次文件寫入操作要寫入的實際的字節(jié)個數(shù)

            fsWrite1.Write(bytsWrite, 0, bytsWrite.Length);

            //3.清空緩沖區(qū) 關(guān)閉文件流 釋放資源     fsWrite.Flush(); fsWrite.Close();   可不寫 Dispose會向上調(diào)用

            fsWrite1.Dispose();

            //第二種方法寫入

            try

            {

                FileStream fsWrite = new FileStream(@"D:\桌面文件\新建文本文檔.txt", FileMode.OpenOrCreate, FileAccess.Write);

                //寫入

                char[] buffchar = new char[100];

                byte[] bufferByte = new byte[100];

                buffchar = "寫入文字".ToCharArray();

                Encoder en = Encoding.UTF8.GetEncoder();

                en.GetBytes(buffchar, 0, buffchar.Length, bufferByte, 0, true);

                fsWrite.Seek(fsWrite.Length, SeekOrigin.Begin);   //從開始位置讀取

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

                fsWrite.Close();

                fsWrite.Dispose();

            }

            catch (Exception ex)

            {

                MessageBox.Show("發(fā)生異常,原因:" + ex.ToString());

            }

        }

        #endregion

        #region 3.數(shù)據(jù)流大文件拷貝

        /// <summary>

        /// 數(shù)據(jù)流大文件拷貝

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void btnFileStreamCopy_Click(object sender, EventArgs e)

        {

            string source = @"D:\桌面文件\9.大文件拷貝.avi";

            string target = @"D:\桌面文件\拷貝.avi";

            BigFileCopy(source, target);

        }

        /// <summary>

        /// 通過文件流實現(xiàn)將source中的文件拷貝到target

        /// </summary>

        /// <param name="source"></param>

        /// <param name="target"></param>

        private void BigFileCopy(string source, string target)

        {

            //1 創(chuàng)建一個讀取源文件的流

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

            {

                //2 創(chuàng)建一個寫入新文件的文件流

                using (FileStream fsWrit = new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write))

                {

                    //拷貝文件的時候,創(chuàng)建的一個中間緩沖區(qū)5MB

                    byte[] bytes = new byte[1024 * 1024 * 5];

                    //返回值表示本次實際讀取到的字節(jié)個數(shù)

                    //把filestream的對象看作是一個 臨時的文件內(nèi)容存儲區(qū),

                    //而自定義的 byte數(shù)組則是我們的數(shù)據(jù)倉庫,

                    //那么,每次filestream執(zhí)行一次read之后,被read到的內(nèi)容可以簡單看作是  剪切并粘貼到了  我們自定義的byte數(shù)組中。

                    int r = 0;

                    while ((r = fsRead.Read(bytes, 0, bytes.Length)) > 0)

                    {

                        //將讀取到的內(nèi)容寫入到新文件中

                        fsWrit.Write(bytes, 0, r);

                        //拷貝進(jìn)度百分比

                        double d = (fsWrit.Position / (double)fsRead.Length) * 100;

                    }

                }

            }

        }

        #endregion

        //1根據(jù)基礎(chǔ)數(shù)據(jù)或存儲庫 流可能只支持這些功能中的一部分

        //2用戶通過使用 CanRead CanWrite 和 CanSeek 屬性  可實現(xiàn)應(yīng)用程序查詢流的功能

        //Read 和 Write 方法讀寫各種不同格式的數(shù)據(jù) 對于支持查找的流 使用Seek  和 SetLegth方法及 Position 和Length 屬性

        //可以查詢和修改流的當(dāng)前位置 和長度

        //Push  清除內(nèi)部緩存區(qū) 并確保將所有數(shù)據(jù)寫入基礎(chǔ)源或存儲庫

        //Close 也會釋放操作系統(tǒng)資源

        //BufferedStream 類提供了將一個經(jīng)過緩沖的流環(huán)另一個流功能 ,以便提高讀寫性能

        //在實現(xiàn)Stream的派生類時,必須提供Read 和 Write 方法的實現(xiàn)

        //異步方法對 BeginRead EndRead BeginWrite 和  EndWrite 通過同步方法Read 和 Write實現(xiàn) 

        //同樣 Read 和 write 的實現(xiàn)已將與異步方法一起正常工作

        //readByte 和 WriteByte 的默認(rèn)實現(xiàn)創(chuàng)建一個新的單元素字節(jié)數(shù)組

        //然后調(diào)用Read 和 Write 的實現(xiàn), 從Stream 派生時 如果有內(nèi)部緩沖區(qū),這樣性能將得到提供

        //CanRead CanSeek CanWrite flush  length position seek  setLength 不要重寫Close 方法,

        //而將所有流清理邏輯放入 Dispose方法

         //C# 語言中提供的主要數(shù)據(jù)流有 NetWorkStream 網(wǎng)路流  BufferedStream 緩沖區(qū)流  MemonryStream 內(nèi)在流

        //FileStream 文件流 CryptoStream 加密流 等 .

        //StreamWrite類 

        //StreamWrite sw=new StreamWriter(string path,bool append);

        //bool append    false 表示產(chǎn)創(chuàng)建一個新文件或現(xiàn)有文件并將其打開 true 標(biāo)示打開文件,保留原來的數(shù)據(jù)

        //常用的方法

        //Close 關(guān)閉當(dāng)前StreamWrite對象和基礎(chǔ)流

        //Dispose 釋放使用的資源

        //Flush 清理當(dāng)前編寫器的所有緩沖區(qū) 并使所有緩沖數(shù)據(jù)寫入基礎(chǔ)流

        //Write 寫入流

        //WriteLine 寫入指定的某些數(shù)據(jù) 后跟行結(jié)束符

        //創(chuàng)建方法2種 

        //1.先創(chuàng)建FileStream 類 再創(chuàng)建StreamReader 類

        //FileStream fs=new FileStream (string Path,FileMode mode);

        //StreamReader sr=new StreamReader (fs);

        ////2.直接創(chuàng)建StreamReader 類

        //StreamReader sr=new StreamReader (stirng  path);

        //Close  

        //Dispose 

        //Peek  返回下個可用字符

        //Read 讀取輸入流中的下一個字符或下組字符

        //readLine  從數(shù)據(jù)流中亣

        /// <summary>

        /// 4.StreamReader大文本讀取 逐行讀取文本文件

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void btnTxtStreamReader_Click(object sender, EventArgs e)

        {

            if (File.Exists(@"D:\桌面文件\新建文本文檔.txt"))

            {

                //using() 自動幫我們釋放流所占用的空間

                using (StreamReader sr = new StreamReader(@"D:\桌面文件\新建文本文檔.txt",Encoding.Default ))

                {

                    string line = null;

                    while ((line = sr.ReadLine() ) != null)

                    {

                        MessageBox.Show(line.ToString());

                    }

                }

            }

            else

            {

                MessageBox.Show("文件不存在");

            }

        }

        /// <summary>

        /// 5.StreamReader大文本寫入

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void btnTxtStreamWriter_Click(object sender, EventArgs e)

        {

            //操作文件路徑

            string path = @"D:\桌面文件\新建文本文檔.txt";

            try

            {

                //第一種方式

                //FileStream fs = new FileStream(path, FileMode.OpenOrCreate);

                //StreamWriter sw = new StreamWriter(fs);

                //第二種方式

                //false 表示產(chǎn)生創(chuàng)建一個新文件或現(xiàn)有文件并將其打開

                //true 表示打開 保留原本數(shù)據(jù)

                string mystr = "寫入一行文字";

                using (   StreamWriter sw = new StreamWriter(path, true,Encoding.Default )){

                    sw.WriteLine(mystr);

                }

                MessageBox.Show("寫入完成!");

            }

            catch (Exception ex)

            {

                MessageBox.Show("發(fā)生異常,原因:" + ex.ToString());

            }

        }

        //文件選擇之OpenFileDialog控件

        private void button5_Click(object sender, EventArgs e)

        {

                openFileDialog1.InitialDirectory = @"D:\桌面文件\source";

                //文件過濾

                openFileDialog1.Filter = "文本文件(*.txt)|*.txt|*.wmv"; 

                openFileDialog1.FilterIndex = 3;

                openFileDialog1.Title = "OpenFileDialog控件";         //默認(rèn)標(biāo)題

                openFileDialog1.FileName = "文件名稱";                     //默認(rèn)文件

                openFileDialog1.ShowHelp = true;

                if (openFileDialog1.ShowDialog() == DialogResult.OK) {

                        textBox1.Text = "";

                        // 獲取文件名

                        string fName = openFileDialog1.FileName;

                        string fileCon = "";

                        StreamReader sr = new StreamReader(fName, System.Text.Encoding.GetEncoding("gb2312"));

                        while ((fileCon = sr.ReadLine()) != null)

                        { textBox1.Text += fileCon+"\r\n";

                        }

                        sr.Close ();

                }

        }

        //文件保存 saveFileDialog

        private void button6_Click(object sender, EventArgs e)

        {

                saveFileDialog1.InitialDirectory = @"D:\桌面文件\source";

                saveFileDialog1.Filter = " 97-2003Word文檔(*.doc)|*.doc)|文本文件(*.txt)|*.txt";

                saveFileDialog1.FilterIndex = 2;

                saveFileDialog1.FileName = "51zxw.txt";

                //Convert.ToString(DateTime.Now.Ticks); 

                if (saveFileDialog1.ShowDialog() == DialogResult.OK)

                {

                    string fName = saveFileDialog1.FileName;

                    FileStream  fs = File.Open(fName ,FileMode.Create);     //可追加

                    StreamWriter sw = new StreamWriter(fs);

                    sw.WriteLine(textBox1.Text  );

                    sw.Close();

                    fs.Close();

                }

        }

        private void textBox1_TextChanged(object sender, EventArgs e)

        {

        }

        //文件夾選擇之FolderBrowserDialog控件   添加 TXT文件

        private void button7_Click(object sender, EventArgs e)

        {

            folderBrowserDialog1.Description = "請選擇一個包含TXT格式的文件夾";   

            folderBrowserDialog1.RootFolder = Environment.SpecialFolder.Desktop;

            folderBrowserDialog1.ShowNewFolderButton = false;

            if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)

            {

                string fileName = folderBrowserDialog1.SelectedPath;   //用戶選擇的路徑

                string[] Files = Directory.GetFiles(fileName );        // 獲取目標(biāo)下的子文件

                foreach (string str in Files) {

                    int i = str.LastIndexOf('.');

                    string  s = str.Substring(str.LastIndexOf('.') + 1).ToLower();

                    if (str.Substring(str.LastIndexOf('.') + 1).ToLower() == "txt") {

                        string filename = System.IO.Path.GetFileName(str);//文件名  “Default.aspx”

                        string extension = System.IO.Path.GetExtension(str);//擴(kuò)展名 “.aspx”

                        string fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(str);// 沒有擴(kuò)展名的文件名 “Default”

                        textBox1.AppendText(filename + "\r\n");

                        textBox1.AppendText(str+"\r\n");

                    }

                }

            }

        }

        private void button8_Click(object sender, EventArgs e)

        {

            folderBrowserDialog1.Description = "請選擇一個包含TXT格式的文件夾";

            folderBrowserDialog1.RootFolder = Environment.SpecialFolder.Desktop;

            folderBrowserDialog1.ShowNewFolderButton = false;

            if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)

            {

                string fileName = folderBrowserDialog1.SelectedPath;   //用戶選擇的路徑

                string[] Files = Directory.GetFiles(fileName);        // 獲取目標(biāo)下的子文件

                foreach (string str in Files)

                {

                    int i = str.LastIndexOf('.');

                    string s = str.Substring(str.LastIndexOf('.') + 1).ToLower();

                    if (str.Substring(str.LastIndexOf('.') + 1).ToLower() == "docx")

                    {

                        textBox1.AppendText(str + "\r\n");

                    }

                }

            }

        }

        private void button10_Click(object sender, EventArgs e)

        {

        }

    }

}

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
c#根據(jù)文件大小顯示文件復(fù)制進(jìn)度條實例
winform下用FileStream實現(xiàn)多文件上傳
C# Byte[]數(shù)組讀取和寫入文件
C# 文件與字符串的互轉(zhuǎn)
WEB頁獲取串口數(shù)據(jù)
C# 導(dǎo)出pdf(瀏覽器不預(yù)覽直接下載)
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服