输入一个数值,然后将这个数值插入到一个文本文件中。文本文件里面是一个排好的数值序列,一行只有一个数值,如何将这个数值插入到这个序列中?比如:
输入的数为2.5
文本文件里的数值序列如下:
1
2
3
4
5
如何将2.5插入到2和3之间?而且插入后文本文件里的数值也是一行只有一个数值?

解决方案 »

  1.   

    逻辑这样.
    先readline,写到一个array里面
    拿2.5和array里的值比较,
    得到一个新串
    再写回到txt中
      

  2.   

    StreamReader objReader = new StreamReader(txtFileName, Encoding.UTF8);
                    string[] arrText=null;//定义数组
                    string sLine = "";
                    while (sLine != null)
                    {
                        sLine = objReader.ReadToEnd();
                        if (sLine != null)
                            arrText.Add(sLine);
                    }
                    objReader.Close(); 
    .......比较省略.........
    写和读差不多,省略...
      

  3.   

    楼上的思路我明白,现在主要问题就是:
    “拿2.5和array里的值比较, 
    得到一个新串 ”
    这一部分的问题,能给个详细的步骤吗?
    非常感谢了!
      

  4.   

    放到数组里,用 Convert.ToDecimal 转化,用原始的冒泡法排序后,写回 txt 文件。 txt文件可以用\r\n 换行。
      

  5.   

    从第一个开始比较,发现
    array[i]<2.5&&2.5<=array[i+1]
    时,先把array[i+1]后面的统统后移一位(array[i+n]=array[i+n+1]),在把array[i+1]=2.5;ok...
      

  6.   

    double num(你需要插入的数据)
    string[] arr==(读到的数据....)
    string newstr="";
    foreach(string str in arr)
    {
       try
       {
       if(double.parse(str)>double.parse(num))
           {
               str+=",\n"+num.ToString();
     
           }
         str+=",\n"+str.ToString;    
       }
       catch
       {}
    }就在这里写的,没区分大小写.其它的自己写...
      

  7.   

    StreamReader smRead = new StreamReader(path, System.Text.Encoding.Default); 
    string line;
    List<int> lst =new List<int>;
    lst.Add(i);
    while ((line = smRead.ReadLine()) != null) 
    {
       lst.Add(int.Parse(line))
    }
    lst.Sort()排序,再遍历输出到txt
      

  8.   

    感谢各位,解决了。
    采用jsoner的方法。
    在if语句里加了个变量,来控制只添加一次。
    要不然在每一个大的数之前都会添加一次数值。
    非常感谢。wuyq11君的方法没试过,明天试一下,谢谢了。
    OK结贴!
      

  9.   

    不过不能用Int的列表,因为有可能是小数,用Single或者Double吧。
      

  10.   


                //新建文件【D:\\p.txt】;创建新form窗体,添加文本框(textBox1.Text) 和一个按钮,点击按钮时,如下操作
                string[] lists;
                StringBuilder sb = new StringBuilder();
                sb.Append("");
                string paths_txt = "D:\\p.txt";
                FileStream fs = new FileStream(paths_txt, FileMode.Open, FileAccess.Read);
                StreamReader sr = new StreamReader(fs, System.Text.Encoding.GetEncoding("utf-8"));
                sr.BaseStream.Seek(0, SeekOrigin.Begin);
                while (!sr.EndOfStream)
                {
                    sb.Append(sr.ReadLine()+"|");
                }
                sr.Close();
                fs.Close();
                sb.Append(textBox1.Text);  //往字符串中添加新的数值            lists=sb.ToString().Split('|');  //分组            //冒泡法排序
                decimal temp = 0;
                int j = 0;
                while (j < lists.Length)
                {
                    for (int i = 0; i < lists.Length - 1; i++)
                    {
                        if (Convert.ToDecimal(lists[i]) > Convert.ToDecimal(lists[i + 1]))
                        {
                            temp = Convert.ToDecimal(lists[i]);
                            lists[i] = lists[i + 1];
                            lists[i + 1] = temp.ToString();
                        }
                    }
                    j++;
                }            //排序完毕,写入 txt
                StringBuilder sb_w = new StringBuilder();
                for (int ii = 0; ii < lists.Length; ii++)
                {
                    sb_w.Append(lists[ii].ToString()+"\r\n");
                }            FileInfo fi = new FileInfo(paths_txt);
                if (fi.Exists)
                {
                    using (StreamWriter sw = fi.CreateText())
                    {
                        sw.Write(sb_w.ToString());
                        sw.Close();
                    }
                }