• 5个对话框和FileStream:文件流


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

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

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

    4、private void button4_Click(object sender, EventArgs e)
    {
    //设置能够打开什么类型的文件
    openFileDialog1.Filter = "文本文件|*.txt|所有文件|*.*";//这是两种
    //显示
    DialogResult dr = openFileDialog1.ShowDialog();

    //取值
    if (dr == DialogResult.OK)//加一个判断看是否选择
    {
    label3.Text = openFileDialog1.FileName;
    }
    }

    5、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(只读));


    //造了一个文件流
    // FileStream fs = new FileStream("E:\aa.txt",FileMode.Open);//第三个第六个

    第二个参数(打开模式)
    CreateNew 指定操作系统应创建新文件,如果文件存在则引发异常。
    Create 指定操作系统创建新文件,如果文件已存在则覆盖之。
    OPen 指定 操作系统应打开现有文件,如果文件不存在则抛出异常。
    OpenOrCreate 指定操作系统应打开文件,如果文件不存在则创建之。
    Truncate 指定操作系统打开现有文件,如果文件已存在则清空,从Truncate打开的文件中读取将引发异常。截取
    Append 若文件存在,则找到文件并找到文件结尾,或者创建一个新文件。追加

     FileStream fs = new FileStream("E:\aa.txt", FileMode.Open,FileAccess.Read); 

    第三个参数(只读)
    Read 对文件的读访问,拥有读取权限。
    Write 对文件的写访问,拥有写入权限。
    ReadWrite 对文件的读访问和写访问,拥有读取和写入两个权限。 


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

    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)
    {
    //拖动一个控件openFileDialog到窗体
    //显示工具
    DialogResult dr = openFileDialog1.ShowDialog();
    //取值
    if (dr == DialogResult.OK)
    {
    //文件路径
    string path = openFileDialog1.FileName;
    //造文件流
    FileStream fs = new FileStream(path,FileMode.Open);


    //1、造一个二进制数组,用来存储读到的数据
    byte[]sj=new byte[fs.Length];//流的长度
    //2、将文件读取为二进制数据,放到二进制数组里面
    fs.Read(sj,0,sj.Length);
    //3、将二进制数据转为字符串
    richTextBox1.Text= Encoding.Default.GetString(sj);
    //流不能 读取 word 、表格等第三方做的
    //关闭流
    fs.Close();
    }
    }

     写文件:

    private void button2_Click(object sender, EventArgs e)
    {
    //拖动一个控件saveFileDialog到窗体
    //显示选择文件对话框
    DialogResult dr = saveFileDialog1.ShowDialog();
    //去路径
    if (dr == DialogResult.OK)
    {
    //文件路径
    string path = saveFileDialog1.FileName;

    //取出文本框中的内容
    string nr= richTextBox1.Text;
    //1、将字符串转为二进制数组
    byte[] sj= Encoding.Default.GetBytes(nr);

    //造一个文件流
    FileStream fs = new FileStream(path,FileMode.Create);

    //2、向文件里写数据
    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;
    //1、将字符串转为二进制数组
    // byte[] sj = Encoding.Default.GetBytes(nr);

    //造一个文件流
    FileStream fs = new FileStream(path, FileMode.Create);

    //造一个streamwrite对象
    StreamWriter sw = new StreamWriter(fs, Encoding.Default);
    //写入文件
    sw.Write(nr);//自动转码
    //关闭
    sw.Close();
    fs.Close();
    }
    }

     三、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();

  • 相关阅读:
    poj3126--Prime Path(广搜)
    iOS中 imageNamed方法 非常多图片占用大量内存问题
    容器+AOP实现动态部署(四)
    SpringBoot整合redis哨兵主从服务
    LINUX安装REDIS集群
    软件安装
    如何优雅地用Redis实现分布式锁
    Redis面试总结
    OAuth2.0 知多少(好)
    一张图搞定OAuth2.0
  • 原文地址:https://www.cnblogs.com/yp11/p/5838225.html
Copyright © 2020-2023  润新知