简体   繁体   中英

Edit .Bat File In C#

Well, first of all my code:

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();
}

When I click on button2 and try to write all of the text into the bat file, I get this result the bat file contains:

System.Web.UI.WebControls.TextBox

Why is that?

I am using all of the following statements, if it helps:

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;

You are getting the type name of the textbox, which leads me to believe that your code rather looks something like:

sw.WriteLine(batedit);

Ie you are sending the textbox object itself to be written to the file instead of the contents of its Text property. This will implicitly call the ToString method, which by default returns the type name of the object.

Also, you are not closing the StreamWriter properly, which might cause problems when you want to use it. You should call the Close method, and you don't have to call Flush before closing the StreamWriter . Alternatively you can put the StreamWriter in a using block, which would dispose it automatically, which will close it.

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

The problem is simple: sw.writeline expects a string. You are sending it a text object which gets turned into the aformentioned.ToString(); which means your line gets translated, loosely, into

sw.WriteLine(theedit.ToString());

if you look at the documentation for WebControls.TextBox... scroll down the list to the Method ToString()

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

What you need to do... is give it one string at a time (although I assume you could just give it the raw string from the textbox):

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM