C# 使用FileStream文件流对文件进行读取写入

主要用到的方法

1.Directory.GetParent(pathName).ToString() + “\” + pathName;//getparent()方法 通过文件名获取绝对路径(不含文件名)

2.FileStream fs = new FileStream(fullPath, FileMode.OpenOrCreate);//实例化一个文件流,指定文件完整路径,设置模式为打开或在不存在时创建

3.StreamReader sr = new StreamReader(fs);//实例化文本读取器 sr.ReadLine()读取每行数据

4.StreamWriter sw = new StreamWriter(fullPath, true);//实例化文本写入器,指定写入的完全路径,确认写入 sw.WriteLine(name);//指定要写入的内容


代码部分

 private void Form1_Load(object sender, EventArgs e)
        {
            string pathName = "UserInfo.ini";
            string fullPath = Directory.GetParent(pathName).ToString() + "\\" + pathName;
            int rows = 0;
            if (File.Exists(fullPath))
            {
                foreach (var item in File.ReadLines(fullPath))//读取文件中的数据,返回一个泛型枚举,并将每一行内容存到枚举的每一列
                {
                    lboxView.Items.Add(item);//初始化listbox,显示文件中的每行数据
                    rows += 1;//对数据行数进行记录
                }
            }
            label1.Text = rows.ToString();//获取当前已写入的文本行数
        }
   /// <summary>
        /// 添加
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnAdd_Click(object sender, EventArgs e)
        {
            //获取输入

            if (string.IsNullOrEmpty(tbxAdd.Text))//没有输入
            {
                return;
            }
            else
            {
                string name = tbxAdd.Text;//输入文本
                string pathName = "UserInfo.ini";//存储信息文件
                string fullPath = Directory.GetParent(pathName).ToString() + "\\" + pathName;//getparent()方法 通过文件名获取绝对路径(不含文件名)

                FileStream fs = new FileStream(fullPath, FileMode.OpenOrCreate);//实例化一个文件流,指定文件完整路径,设置模式为打开或在不存在时创建
                StreamReader sr = new StreamReader(fs);//实例化文本读取器
                for (int i = 0; i < Convert.ToInt32(label1.Text); i++)//根据文件中已有的文本行数进行遍历
                {
                    if (sr.ReadLine().ToLower() == name.ToLower())//读取文件中的每一行数据,判断输入文本与已输入文本是否相同
                    {
                        MessageBox.Show("重复");
                        sr.Close();//关闭读取器
                        sr.Dispose();//清除读取器
                        tbxAdd.Text = "";
                        return;
                    }
                }
                sr.Close();
                sr.Dispose();
                StreamWriter sw = new StreamWriter(fullPath, true);//实例化文本写入器,指定写入的完全路径,确认写入
                sw.WriteLine(name);//指定要写入的内容
                sw.Close();
                sw.Dispose();
                fs.Close();//关闭文件流
                fs.Dispose();//清除文件流
                lboxView.Items.Add(name);
                tbxAdd.Text = "";
                label1.Text = (Convert.ToInt32(label1.Text) + 1).ToString();//成功插入一条文本后,当前文件中文本行数+1
            }
        }

界面

界面

猜你喜欢

转载自blog.csdn.net/o527883184/article/details/51190816