将逗号分隔的字符串逐行写入文件

时间:2011-07-28 14:22:33

标签: c# csv file-writing

此cide用于从富文本框(即用逗号分隔的用户列表)中获取文本,然后在各自的行中写入每个条目。

然而,它没有。我做错了什么?

if (chkWhiteList.Checked)
        {
            string rawUser = rtboxWhiteList.Text;
            string[] list = rawUser.Split(new char[] { ',' });

            foreach (string user in list)
            {
                using (StreamWriter whiteList = new StreamWriter(cleanDir + @"\white-list.txt"))
                {
                    whiteList.WriteLine(String.Format("{0}\r\n", user));
                }
            }
        }

6 个答案:

答案 0 :(得分:5)

我会更换你的usingfor loop。并删除新的行字符

using (StreamWriter whiteList = new StreamWriter(cleanDir + @"\white-list.txt"))
{
    foreach (string user in list)
    {
        whiteList.WriteLine(user);
    }
}

答案 1 :(得分:3)

你的foreach和你的使用是错误的方式。您需要使用来设置streamwriter,然后执行循环(foreach)以写入行。

if (chkWhiteList.Checked)
    {
        string rawUser = rtboxWhiteList.Text;
        string[] list = rawUser.Split(new char[] { ',' });

        using (StreamWriter whiteList = new StreamWriter(cleanDir + @"\white-list.txt"))
        {
            foreach (string user in list)
            {
                whiteList.WriteLine(String.Format("{0}\r\n", user));
            }
        }
    }

(这是对你的代码的粗略破解。)

答案 2 :(得分:2)

        {
            using (StreamWriter whiteList = new StreamWriter(cleanDir + @"\white-list.txt"))
            {
                whiteList.WriteLine(String.Format("{0}\r\n", user));
            }
        }

这将每次都与用户一行重写到文件。

foreach周围移动open语句,将所有用户名写入文件。

答案 3 :(得分:2)

试试这个......

    if (chkWhiteList.Checked)
    {
        string rawUser = rtboxWhiteList.Text;
        string[] list = rawUser.Split(new char[] { ',' });

        using (StreamWriter whiteList = new StreamWriter(cleanDir + @"\white-list.txt"))
            {
                foreach (string user in list)
                {
                     whiteList.WriteLine(String.Format("{0}\r\n", user));
                }

            }
    }

答案 4 :(得分:1)

这可以通过File.WriteAllLines

轻松解决非常
string rawUser = rtboxWhiteList.Text;            
string[] list = rawUser.Split(',');
System.IO.File.WriteAllLines(cleanDir + @"\white-list.txt", list);

答案 5 :(得分:0)

WriteLine调用附加一个CRLF,但您的String.Format包含一个额外的CRLF。所以你会得到每个用户两行。

并且using语句需要在foreach之外(ist中的字符串用户)。