zoukankan      html  css  js  c++  java
  • 流操作

    文件流:FileStream——用来操作文件,需要事先导入命名空间System.IO

    使用流的步骤:

    1,创建流:Filestream fs=new Filestream(“文件路径”,FileMode枚举)

    FileMode.Append - 如果存在,就打开追加;如果不存在就新建
    FileMode.Create - 如果存在,覆盖。如果不存在就新建。
    FileMode.OpenOrCreate。如果存在就打开,不存在就新建。

    2,读取或写入流

    (1)写入流

    第一步:需要把写入的字符串编译成二进制数组

     byte[] aaa = System.Text.Encoding.Default.GetBytes(txt.Text);

    第二步:写入流

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

    //第一个参数:要被写进去的二进制数组;
    //第二个参数:开始的位置,一般都是0
    //第三个参数:要往流里面写入的长度。一般都是数组的length

    (2)读取流

    第一步:准备一个二进制数组,用来接收二进制数据

    byte[] aaa = new byte[fs.Length];    //数组的长度一般使用流的长度来定义,因为这个数组就是用来存储流中的数据的

    第二步:使用流进行读取,把读出来的数据放在上面的二进制数组中

    fs.Read(aaa,0,aaa.Length);
    //第一个参数:被读出来的二进制数据;
    //第二个参数:开始的位置,一般都是0。从哪开始读
    //第三个参数:要读取的长度。一般都是数组的length。即流的长度(但是不能用fs.Length,因为它是long类型,而此处需要的是int类型)

    第三步:把读出的二进制数组编译成字符串赋给textbox.Text

    textbox.Text= System.Text.Encoding.Default.GetString(aaa);

    3,关闭流:fs.Close();

    注意:文件操作时,为防止内存泄漏硬盘读取错误造成流关闭不了常使用try——finally或者是using事务来处理

    案例:

     private void btnSave_Click(object sender, EventArgs e)
            {
                FileStream fs = null;
                try
                {
                    //创建流
                    fs  = new FileStream("aaa.txt", FileMode.Create);
    
                    //把文本框的字符串,变成1010101二进制byte[]
                    byte[] aaa = System.Text.Encoding.Default.GetBytes(txt.Text);
                    //写入流
                    fs.Write(aaa, 0, aaa.Length);
                }
                finally
                {
                    //关闭流
                    if (fs != null)
                    {
                        fs.Close();
                    }
                }
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                //创建流
                using (FileStream fs = new FileStream("aaa.txt", FileMode.Open))
                {
                    //准备一个空的二进制数组,用来接收读取出来的内容
                    byte[] aaa = new byte[fs.Length];
                    //读取流
                    fs.Read(aaa, 0, aaa.Length);
                    //把二进制转为字符串
                    txt.Text = System.Text.Encoding.Default.GetString(aaa);
    
                    //关闭流
                    fs.Close();
                }
            }

    ******对于文本(字符串)形式的文件流可以使用streamWriter和streamReader来简化操作

    (1)创建流

    FileStream fs = new FileStream("bbb.txt",FileMode.Create);  //写入流(创建文件)
    // FileStream fs = new FileStream("bbb.txt",FileMode.Open);   //读取流(打开文件)

    (2)套写入器或读取器

    StreamWriter writer = new StreamWriter(fs);      //新建写入器

    // StreamReader reader = new StreamReader(fs);   //新建读取器

    (3)使用读取器或写入器对文件进行操作

    writer.Writer(textbox.Text);
    // textbox.Text = reader.ReadToEnd();

    (4)关闭读取器写入器和文件流

    writer.Close();
    //reader.Close();
    fs.Close();

    *******对于文本(字符串)形式的文件还可以再简化。——不用写流的创建,关闭,直接使用流的读取器和写入器

     private void button4_Click(object sender, EventArgs e)
            {
                StreamWriter writer = new StreamWriter("ccc.txt",true, Encoding.Default);  //第一个参数是文件的路径,第二个参数是bool型的(是否追加),第三个参数编码格式
                writer.Write(txt.Text);
                writer.Close();
            }
    
            private void button5_Click(object sender, EventArgs e)
            {
                StreamReader reader = new StreamReader("ccc.txt",Encoding.Default);
                txt.Text =  reader.ReadToEnd();
                reader.Close();
            }
  • 相关阅读:
    android蓝牙技术
    startActivityForResult 页面跳转回调
    android提示框
    二级列表展示数据库查询
    字符串着色
    ActionBar窗口应用
    android 补间动画帧动画
    ExpandableListView二级列表
    解析json数组——TypeToken
    Scrapy中的Callback如何传递多个参数
  • 原文地址:https://www.cnblogs.com/William-1234/p/4511283.html
Copyright © 2011-2022 走看看