zoukankan      html  css  js  c++  java
  • WinForm 对话框、流

    一、对话框

    ColorDialog:颜色选择控件

            private void button1_Click(object sender, EventArgs e)
            {
                //显示颜色选择器
                colorDialog1.ShowDialog();
    
                //把取到的颜色赋值给panel
                panel1.BackColor = colorDialog1.Color;
                
            }

    FontDialog:字体样式选择控件

            private void button3_Click(object sender, EventArgs e)
            {
                //显示字体样式选择器
                fontDialog1.ShowDialog();
    
                //取值
                label2.Font = fontDialog1.Font;
            }

    FolderBrowserDialog:文件夹选择控件

            private void button2_Click(object sender, EventArgs e)
            {
                //显示文件夹选择器
                folderBrowserDialog1.ShowDialog();
    
                //取文件路径
                label1.Text = folderBrowserDialog1.SelectedPath;
            }

    openFileDialog:文件选择控件
    ※限制打开的文件后缀:Filter = 文本文件|*.txt|所有文件|*.*;
    一个显示一个后缀是一组,添加另一组需要继续使用'|'

            private void button4_Click(object sender, EventArgs e)
            {
                //设置能够打开什么类型的文件
                openFileDialog1.Filter = "文本文件|*.txt|所有文件|*.*";
    
                //显示 DialogResult:获取或设置窗体的对话框结果
                DialogResult dr = openFileDialog1.ShowDialog();
    
                //取值
                if (dr == DialogResult.OK)//为了防止用户不选择
                {
                    label3.Text = openFileDialog1.FileName;
                }
            }


    saveFileDialog:保存路径选择控件

    ※选择已有的文件会覆盖

            private void button5_Click(object sender, EventArgs e)
            {
                //显示
                DialogResult dr = saveFileDialog1.ShowDialog();
    
                //取值
                if (dr == DialogResult.OK)
                {
                    label4.Text = saveFileDialog1.FileName;
                }
    
            }

    二、流 文件操作

    流:(I/O)输入输出流

         分类:文件流,内存流,网络流

         流的操作一般要放在try catch里面,操作文件网络容易出现异常

    命名空间:using system .IO;
            using system .Text; //二进制转换需要的命名空间

    (一)类:FileStream:文件流

    1.构造:一般用第三个和第六个重载

    FileStream stream = new FileStream("d:\test.txt"(路径),FileMode.Creat(打开模式),FileAccess.Read(只读));

                       ※写路径的时候前面加@"d: est.txt",或者写双斜杠

      第二个参数 枚举类型
      CreateNew    指定操作系统应创建新文件,如果文件存在则引发异常
      Create      指定操作系统创建新文件,如果文件已存在则覆盖之
      OPen        指定 操作系统应打开现有文件,如果文件不存在则抛出异常
      OpenOrCreate 指定操作系统应打开文件,如果文件不存在则创建之
      Truncate    指定操作系统打开现有文件,如果文件已存在则清空,从Truncate打开的文件中读取将引发异常
      Append      若文件存在,则找到文件并找到文件结尾,或者创建一个新文件。
     
      第三个参数 确定访问文件的方式 默认可读可写
      Read        只读 对文件的读访问,拥有读取权限。
      Write      只写 对文件的写访问,拥有写入权限。
      ReadWrite      可读可写 对文件的读访问和写访问,拥有读取和写入两个权限。 



    2.属性:

    Length  流的长度
    Position流的当前位置,探测光标的当前位置

    3.方法:

      Write(byte[]流的内容,int从第几个位置写,int写入长度);
         参数,第一个二进制数组,第二个从哪个位置开始写一般从0开始,第三个写进去多长(一般用Length,需要强转为int)。
      Read(byte[]存放读出流的空间,int从第几个位置读,int读多长);读文件
      seek(int偏移量,SeekOrigin.Begin(从哪计算偏移量))调整流的当前位置,seek(0,seekOrigin.End),将光标移到末尾
      Flush();清除缓存
      Close();关闭流

    4.用法:

    读文件内容:

            private void button1_Click(object sender, EventArgs e)
            {
                //显示工具
                DialogResult dr = openFileDialog1.ShowDialog();
    
                //取值
                if (dr == DialogResult.OK)
                {
                    //文件路径
                    string path = openFileDialog1.FileName;
    
                    //造文件流
                    FileStream fs = new FileStream(path,FileMode.Open);
    
                    //造一个二进制数组,用来存储读到的数据
                    byte[] sj = new byte[fs.Length];
    
                    //将文件读取为二进制数据,放到二进制数组里面
                    fs.Read(sj,0,sj.Length);
    
                    //将二进制数据转为字符串 Encoding格式转换 Default自动获取当前程序的编码方式 Getstring返回字符串
                    richTextBox1.Text = Encoding.Default.GetString(sj);
    
                    //关闭流
                    fs.Close();
                }
                
            }

    写文件:把写的内容存入

            private void button2_Click(object sender, EventArgs e)
            {
                //显示选择文件对话框
                DialogResult dr = saveFileDialog1.ShowDialog();
    
                //取路径
                if (dr == DialogResult.OK)
                {
                    //文件路径
                    string path = saveFileDialog1.FileName;
    
                    //取出文本框中的内容
                    string nr = richTextBox1.Text;
    
                    //将字符串转为二进制数组
                    byte[] sj = Encoding.Default.GetBytes(nr);
    
                    //造一个文件流
                    FileStream fs = new FileStream(path,FileMode.Create);
    
                    //向文件里面写数据
                    fs.Write(sj,0,sj.Length);
    
                    //关闭流
                    fs.Close();
                }
            }


    (二)StreamWrite类:只能写

            private void button3_Click(object sender, EventArgs e)
            {
                //显示选择文件对话框
                DialogResult dr = saveFileDialog1.ShowDialog();
    
                //取路径
                if (dr == DialogResult.OK)
                {
                    //文件路径
                    string path = saveFileDialog1.FileName;
    
                    //取出文本框中的内容
                    string nr = richTextBox1.Text;//造一个文件流
                    FileStream fs = new FileStream(path, FileMode.Create);
    
                    //造一个StreamWrite对象
                    StreamWriter sw = new StreamWriter(fs, Encoding.Default);
    
                    //写入文件
                    sw.Write(nr);
    
                    //关闭
                    sw.Close();
                    fs.Close();
                }
            }

    第一种方式,使用流
    StreamWriter sw = new StreamWriter(fs,Encoding.Default);
    第二种方式,不使用流 第二个参数是是否追加内容
    StreamWriter sw = new StreamWriter(path,true,Encoding.Default);


    (三)StreamRead类:只能读

    //取文件路径
    string path = saveFileDialog1.FileName;

    //打开文件流
    FileStream fs = new FileStream(path,FileMode.Create,FileAccess.Write);

    //第一种方式,使用流
    StreamReader sr = new StreamReader(fs,Encoding.Default);

    //第二种方式,不适用流
    //StreamReader sr = new StreamReader(path,Encoding.Default);

    //读一行
    richTextBox1.Text = sr.ReadLine();

    //读所有
    richTextBox1.Text = sr.ReadToEnd();

    //关闭
    sr.Close();

  • 相关阅读:
    棋盘完美覆盖数(小规模原理实现)
    Codeforces 115A Party (并查集思维)
    datetime日期和时间
    range与enumerate的区别
    爬取爱套图网上的图片
    python爬取365好书中小说
    列表和元组的方法
    字符串中的方法
    从电源问题出发,带你揭秘新体系结构范式 COA
    KubeCon 2020 演讲集锦|《阿里巴巴云原生技术与实践 13 讲》开放下载
  • 原文地址:https://www.cnblogs.com/ShenG1/p/5838705.html
Copyright © 2011-2022 走看看