C#实现txt文件的增删改查

代码如下:

using System;
using System.Collections.Generic;
using System.IO;
namespace ConsoleApp1
{
    class Person 
    {
        public string name;
        public string id;
        public string password;
        public string state;
        public string description;
        public Person(string name,string id,string password,string state,string description)
        {
            this.name = name;
            this.id = id;
            this.password = password;
            this.state = state;
            this.description = description;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            //为了方便查看文件,建议将path改为您的桌面路径,最好用绝对路径,相对路径我没有进行调试可能报错
            string path = @"C:\Users\Error\Desktop\test.txt";
            string initstr = "姓名,编号,密码,状态,描述";
            Person student1 = new Person("张三", "01", "123", "大二再度", "优秀学生");
            Person student2 = new Person("李四", "02", "456", "即将毕业", "优秀学生");
            Person student3= new Person("王五", "03", "789", "已经毕业", "优秀毕业生");
            initFile(path,initstr);
            addData(path, student1);
            addData(path, student2);
            addData(path, student3);
            readFile(path);
            Console.WriteLine("----------------------------------------");
            findDataById(path, "01");
            Console.WriteLine("----------------------------------------");
            delDataById(path, "02");
            //delDataByName(path, "李四");
            readFile(path);
            Console.WriteLine("----------------------------------------");
            reviseDataById(path, "03");
            readFile(path);
            Console.WriteLine("----------------------------------------");
            clearFile(path);
            readFile(path);
            Console.WriteLine("----------------------------------------");
            //删除文件后再此运行会报错,强行终止后再运行又好使了,我不理解。。。
            destroyFile(path);

        }
        public static void initFile(string path,string initstr)
        {
            if (!File.Exists(path))
            {
                using (File.Create(path))
                {
                    File.WriteAllText(path, initstr + "\n");
                }
            }
            else
            {
                File.WriteAllText(path, initstr + "\n");
                return;
            }
            
        }
        public static void clearFile(string path)
        {
            File.WriteAllText(path, "");
        }
        public static void destroyFile(string path)
        {
            File.Delete(path);
        }
        
        public static void readFile(string path)
        {
            string[] strArray = File.ReadAllLines(path);

            foreach (string s in strArray)
            {
                Console.WriteLine(s);
            }
        }
        public static void addData(string path ,Person student)
        {
            File.AppendAllText(path, student.name+",");
            File.AppendAllText(path, student.id + ",");
            File.AppendAllText(path, student.password + ",");
            File.AppendAllText(path, student.state + ",");
            File.AppendAllText(path, student.description+"\n");
        }
        //name和id一样我只在删除时演示两遍,其他操作只演示id
        public static void delDataById(string path,string id)
        {
            
            List<string> lines = new List<string>(File.ReadAllLines(path));
            int count = 0;
            foreach (string line in lines)
            {
                string[] items = line.Split(",");
                if (items[1] == id)
                {
                    lines.RemoveAt(count);
                    File.WriteAllLines(path, lines.ToArray());
                    Console.WriteLine("成功删除id为{0}的学生信息", id);
                    return;
                }
                count++;
            }
            Console.WriteLine("无id为{0}的学生,请更换其他id", id);
            
        }
        public static void delDataByName(string path, string name)
        {

            List<string> lines = new List<string>(File.ReadAllLines(path));
            int count = 0;
            foreach (string line in lines)
            {
                string[] items = line.Split(",");
                if (items[0] == name)
                {
                    lines.RemoveAt(count);
                    File.WriteAllLines(path, lines.ToArray());
                    Console.WriteLine("成功删除name为{0}的学生信息", name);
                    return;
                }
                count++;
            }
            Console.WriteLine("无name为{0}的学生,请更换其他姓名", name);

        }
        public static void findDataById(string path, string id)
        {

            List<string> lines = new List<string>(File.ReadAllLines(path));
            int count = 0;
            foreach (string line in lines)
            {
                string[] items = line.Split(",");
                if (items[1] == id)
                {
                    Console.WriteLine("您所需要的学生信息为[姓名:{0},编号:{1},密码:{2},状态:{3},描述:{4}]",items[0],items[1], items[2], items[3], items[4]);
                    return;
                }
                count++;
            }
            Console.WriteLine("无id为{0}的学生,请更换其他id", id);

        }
        public static string operate(string[] items,string option,int index)
        {
            Console.Write("输入修改后的{0}-->", option);
            items[index] = Console.ReadLine();
            string newline = "";
            foreach (string i in items)
            {
                newline += i + ",";
            }
            return newline.Substring(0,newline.Length-1)+"\n";
        }


        public static void reviseDataById(string path, string id)
        {

            List<string> lines = new List<string>(File.ReadAllLines(path));
            int count = 0;
            foreach (string line in lines)
            {
                string[] items = line.Split(",");
                if (items[1] == id)
                {
                    Console.WriteLine("匹配成功!");
                    Console.WriteLine("当前学生信息为[姓名:{0},编号:{1},密码:{2},状态:{3},描述:{4}]", items[0], items[1], items[2], items[3], items[4]);
                    while (true)
                    {
                        Console.Write("请输入要修改的项-->");
                        string item = Console.ReadLine();
                        switch (item)
                        {
                            case "姓名":
                                
                                lines[count] = operate(items, "姓名", 0);
                                File.WriteAllLines(path, lines.ToArray());
                                break;
                            case "编号":
                                
                                lines[count] = operate(items, "编号", 1);
                                File.WriteAllLines(path, lines.ToArray());
                                break;
                            case "密码":
                                
                                lines[count] = operate(items, "密码", 2);
                                File.WriteAllLines(path, lines.ToArray());
                                break;
                            case "状态":
                                
                                lines[count] = operate(items, "状态", 3);
                                File.WriteAllLines(path, lines.ToArray());
                                break;
                            case "描述":
                                
                                lines[count] = operate(items, "描述", 4);
                                File.WriteAllLines(path, lines.ToArray());
                                break;
                            default:
                                Console.WriteLine("无此选项,修改失败");
                                break;
                        }
                        Console.WriteLine("是否继续修改此人信息,回复1->继续,其他->退出");
                        Console.Write("输入:");
                        string num=Console.ReadLine();
                        if (num != "1")
                        {
                            break;
                        }
                    }
                        return;
                }
                count++;
            }
            Console.WriteLine("无id为{0}的学生,请更换其他id", id);
        }
    }
}

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值