在C#中编辑.Bat文件

时间:2011-06-27 23:16:30

标签: c# asp.net

好吧,首先是我的代码:

protected void Button2_Click1(object sender, EventArgs e)
{
    string batname = edit.SelectedValue;
    StreamWriter sw = new StreamWriter("D:\\MPSite-Serv\\bats\\" + batname);

    string theedit = batedit.Text;
    sw.WriteLine(theedit);
    sw.Flush();
}

当我点击button2并尝试将所有文​​本写入bat文件时,我得到此结果 bat文件包含:

System.Web.UI.WebControls.TextBox

为什么?

我正在使用以下所有陈述,如果有帮助的话:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Diagnostics;

2 个答案:

答案 0 :(得分:3)

您正在获取文本框的类型名称,这使我相信您的代码看起来像:

sw.WriteLine(batedit);

即。您正在发送文本框对象本身以写入文件而不是其Text属性的内容。这将隐式调用ToString方法,该方法默认返回对象的类型名称。

此外,您没有正确关闭StreamWriter,这可能会在您想要使用时导致问题。您应该调用Close方法,并且在关闭Flush之前不必致电StreamWriter。或者,您可以将StreamWriter放在using块中,该块会自动处理它,这将关闭它。

答案 1 :(得分:0)

http://msdn.microsoft.com/en-us/library/system.io.streamwriter.aspx#Y2863

问题很简单:sw.writeline需要一个字符串。你正在发送一个文本对象,它变成了前面提到的.ToString();这意味着你的行被松散地翻译成

sw.WriteLine(theedit.ToString());

如果您查看WebControls.TextBox的文档...向下滚动列表到方法ToString()

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.textbox.aspx

你需要做的是......一次给它一个字符串(虽然我假设你可以从文本框中给它原始字符串):

    using System.IO;

    namespace String_Writer
    {
        class Program
        {
            static void Main(string[] args)
            {
                string batname = "test.txt";
                string theedit = "Testing one two three four\n\nfive six seven eight.";
                using(StreamWriter sw = File.CreateText("C:\\Users\\Kriis\\Desktop\\" + batname))
                {
                    using (StringReader reader = new StringReader(theedit))
                    {
                        string line = string.Empty;
                        do
                        {
                            line = reader.ReadLine();
                            if (line != null)
                            {
                                sw.WriteLine(line);
                            }

                        } while (line != null);
                    }
                }
            }
        }
    }