在c#从控制台写入文件并读取,第一次的数据写进去再读出来之后。 为什么第二次写数据覆盖掉第一次的?

#求大神解决
//文件路径
string fileName = @"D:\c#\workspace\myAssignment\chepiao2.txt";

        Console.WriteLine("\n\t简单客车售票系统" + "\n");
        string[,] zuo = new string[9, 4];
        for (int i = 0; i < 9; i++)
        {
            //Console.WriteLine();
            for (int j = 0; j < 4; j++)
            {
                zuo[i,j] = "【有票】";
                //Console.Write(zuo[i, j]);
            }
        }


        string s = string.Empty;//这个是标识退出或座位的。
       //读取文件中的数据           
        while (true)
        {

            using (StreamReader sr = new StreamReader(fileName))
            {
                //一次读取一行
                string line;
                while ((line = sr.ReadLine()) != null)
                {
                    //读取到的数据输出到控制台
                    Console.WriteLine(line);

                }

            }

            Console.Write("请输入作为行号和列号(例如:0,2)按q退出!");

            s = Console.ReadLine();//读取输入的值。         
            if (s == "q") break;              
            try
            {
                string[] str = s.Split(',');//以逗号分隔。
                int one = int.Parse(str[0]);
                int two = int.Parse(str[1]);

                while (true) 
                {
                    if (one >= zuo.GetLength(0) || two < 0
                        || one >= zuo.GetLength(0) || two < 0)
                    {
                        Console.WriteLine("输入的座位号有误请重新输入");                        
                        break;
                    }
                    else if (zuo[one, two] == "【已售】" )
                    {

                        //zuo[one, two] = "【已售】";
                        Console.WriteLine("输入座位票已售出,请重新输入");

                       //zuo[one, two] = "【已售】";
                        break;
                    }
                    else
                    {
                        zuo[one, two] = "【已售】";
                        Console.WriteLine("售票成功!");
                        break;
                    }
                }
            }
            catch (Exception)
            {
                Console.WriteLine("异常错误!");
            }

            if (s != "q")
            {
                //将控制台的数据写到文件中去
                using (StreamWriter sw = new StreamWriter(fileName))
                {

                    for (int i = 0; i < 9; i++)
                    {
                        string str = " ";
                        for (int j = 0; j < 4; j++)
                        {
                            str += zuo[i, j] + ",";
                        }
                        sw.WriteLine(str);
                    }

                }
            }
            else
            {
                break;
            }
        }

        Console.ReadKey();

0

2个回答

using (StreamWriter sw = new StreamWriter(fileName, true))

1
caozhy
贵阳挖掘机马善福,自备车辆专业挖游泳池 回复平行จุ๊บ: 那你读取进来插入再写回去
3 个月之前 回复
weixin_43414112
平行จุ๊บ 试过了,这个方法是又在末尾添加了一个二位数组,我想的是,在第一次添加了后,第二次还会有第一次的数据,但不在末尾添加。这个方法还是有原来的效果。
3 个月之前 回复

如楼上所言,StreamWriter单个参数的构造函数,默认文件写入不是以追加的方式写入的。这是两个构造函数的代码

public StreamWriter(String path) 
            : this(path, false, UTF8NoBOM, DefaultBufferSize) {
        }
public StreamWriter(String path, bool append) 
            : this(path, append, UTF8NoBOM, DefaultBufferSize) {
        }               
1
weixin_43414112
平行จุ๊บ 试过了,这个方法是又在末尾添加了一个二位数组,我想的是,在第一次添加了后,第二次还会有第一次的数据,但不在末尾添加。这个方法还是有原来的效果。
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!