none
【C#.NET】C# 如何删除记事本某条信息 RRS feed

  • 问题

  • 在记事本里的数据如下:我想要的功能是要删除其中的“数据一”

    数据一,数据二,数据三

     

    我大体查看了一下相关方法:发现只有FileInfo到是有个Delete方法 这个方法是删除整个文件的。也就是说它会删除整个记事本。并且数据流对象StreamWriter与StreamReader也没有相关删除方法。请问高手我该怎么做呢? 先谢谢了


    煜诚海参专卖 淘宝店铺:http://jinweb.taobao.com
    2011年5月24日 3:00

答案

  • 把整个文件内容读取出来,删除不要的部分后再将结果重新写入到的文件中。

    读取与写入文件内容可使用下面的方法

    System.IO.File.ReadAllText;

    System.IO.File.WriteAllText;

    或直接使用 StreamReader 和 StreamWriter


    知识改变命运,奋斗成就人生!
    2011年5月24日 4:53
    版主
  • 你好:)

    假设你的数据都是逗号分割,不妨这样做:

    【删除部分】

    List<string> strings = new List<string>();

    strings.AddRange(File.ReadAllText("C:\\try.txt").Split(',');

    int index = strings.IndexOf("数据一");

    strings.RemoveAt(index);

    【重新组合部分】

    string s = string.Join(strings.ToArray(),",');

    File.WriteAllText("C:\\try.txt",s);


    如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请QQ我
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年5月24日 8:03
    版主
  • 在记事本里的数据如下:我想要的功能是要删除其中的“数据一”

    数据一,数据二,数据三

     

    我大体查看了一下相关方法:发现只有FileInfo到是有个Delete方法 这个方法是删除整个文件的。也就是说它会删除整个记事本。并且数据流对象StreamWriter与StreamReader也没有相关删除方法。请问高手我该怎么做呢? 先谢谢了


    煜诚海参专卖 淘宝店铺:http://jinweb.taobao.com


    感谢大家 其实我是这样解决的 代码如下:

            string diction = string.Empty;
            if (this.Diction.SelectedItem.Text != "")
            {
                FileInfo fi = new FileInfo(System.Web.HttpContext.Current.Server.MapPath("~/diction.txt"));
                for (int i = 0; i < Diction.Items.Count; i++)
                {
                    if (Diction.Items[i].Selected)
                    {
                        FileStream fs = fi.OpenRead();
                        StreamReader sr = new StreamReader(fs, System.Text.Encoding.UTF8);//读取数据流
                        string[] dictions = System.Text.RegularExpressions.Regex.Split(sr.ReadToEnd().Trim(), ",{1,}");//读取到数组中
                        foreach (string dic in dictions)
                        {
                            if (Diction.Items[i].ToString() != dic)
                            {
                                diction += dic + ",";
                            }
                        }
                        sr.Close();
                        fs.Close();
                        File.WriteAllText(System.Web.HttpContext.Current.Server.MapPath("~/diction.txt"), diction.TrimEnd(','));
                        diction = string.Empty;
                    }
                }


            }


    煜诚海参专卖 淘宝店铺:http://jinweb.taobao.com
    • 已标记为答案 jinwb1982 2011年6月8日 9:04
    2011年6月8日 9:04

全部回复

  • 把整个文件内容读取出来,删除不要的部分后再将结果重新写入到的文件中。

    读取与写入文件内容可使用下面的方法

    System.IO.File.ReadAllText;

    System.IO.File.WriteAllText;

    或直接使用 StreamReader 和 StreamWriter


    知识改变命运,奋斗成就人生!
    2011年5月24日 4:53
    版主
  • 你好:)

    假设你的数据都是逗号分割,不妨这样做:

    【删除部分】

    List<string> strings = new List<string>();

    strings.AddRange(File.ReadAllText("C:\\try.txt").Split(',');

    int index = strings.IndexOf("数据一");

    strings.RemoveAt(index);

    【重新组合部分】

    string s = string.Join(strings.ToArray(),",');

    File.WriteAllText("C:\\try.txt",s);


    如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请QQ我
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    2011年5月24日 8:03
    版主
  • 在记事本里的数据如下:我想要的功能是要删除其中的“数据一”

    数据一,数据二,数据三

     

    我大体查看了一下相关方法:发现只有FileInfo到是有个Delete方法 这个方法是删除整个文件的。也就是说它会删除整个记事本。并且数据流对象StreamWriter与StreamReader也没有相关删除方法。请问高手我该怎么做呢? 先谢谢了


    煜诚海参专卖 淘宝店铺:http://jinweb.taobao.com


    感谢大家 其实我是这样解决的 代码如下:

            string diction = string.Empty;
            if (this.Diction.SelectedItem.Text != "")
            {
                FileInfo fi = new FileInfo(System.Web.HttpContext.Current.Server.MapPath("~/diction.txt"));
                for (int i = 0; i < Diction.Items.Count; i++)
                {
                    if (Diction.Items[i].Selected)
                    {
                        FileStream fs = fi.OpenRead();
                        StreamReader sr = new StreamReader(fs, System.Text.Encoding.UTF8);//读取数据流
                        string[] dictions = System.Text.RegularExpressions.Regex.Split(sr.ReadToEnd().Trim(), ",{1,}");//读取到数组中
                        foreach (string dic in dictions)
                        {
                            if (Diction.Items[i].ToString() != dic)
                            {
                                diction += dic + ",";
                            }
                        }
                        sr.Close();
                        fs.Close();
                        File.WriteAllText(System.Web.HttpContext.Current.Server.MapPath("~/diction.txt"), diction.TrimEnd(','));
                        diction = string.Empty;
                    }
                }


            }


    煜诚海参专卖 淘宝店铺:http://jinweb.taobao.com
    • 已标记为答案 jinwb1982 2011年6月8日 9:04
    2011年6月8日 9:04