0

此 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));
                }
            }
        }
4

6 回答 6

5

我会交换你的usingfor loop周围的。并删除换行符

using (StreamWriter whiteList = new StreamWriter(cleanDir + @"\white-list.txt"))
{
    foreach (string user in list)
    {
        whiteList.WriteLine(user);
    }
}
于 2011-07-28T14:27:14.803 回答
3

你的 foreach 和你的 using 是错误的方式。您需要使用设置流编写器,然后在此过程中执行循环(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));
            }
        }
    }

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

于 2011-07-28T14:27:11.847 回答
2
        {
            using (StreamWriter whiteList = new StreamWriter(cleanDir + @"\white-list.txt"))
            {
                whiteList.WriteLine(String.Format("{0}\r\n", user));
            }
        }

这将在每次与用户一行的情况下重写文件。

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

于 2011-07-28T14:27:11.200 回答
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));
                }

            }
    }
于 2011-07-28T14:33:17.617 回答
1

这可以容易地解决File.WriteAllLines

string rawUser = rtboxWhiteList.Text;            
string[] list = rawUser.Split(',');
System.IO.File.WriteAllLines(cleanDir + @"\white-list.txt", list);
于 2011-07-28T14:31:12.837 回答
0

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

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

于 2011-07-28T14:27:50.377 回答