Question

Why does this code not write my string to the file:

 string file = "Myfile.txt";
        MemoryStream ms = new MemoryStream();

void writeToFile(string text)
        {
            System.Text.ASCIIEncoding  encoding=new System.Text.ASCIIEncoding();
            byte[] barr = encoding.GetBytes(text);


            ms.Write(barr, 0, barr.Length);

            using (FileStream fs = new FileStream(file, FileMode.OpenOrCreate))
            {
                using (BinaryWriter bw = new BinaryWriter(ms))
                {
                    bw.Write(ms.ToArray());
                }
            }
        }


        static void Main(string[] args)
        {

            Program p = new Program();

            p.writeToFile("Tony Test");

            Console.ReadLine();

        }
Was it helpful?

Solution

Look at this line:

using (BinaryWriter bw = new BinaryWriter(ms))

You're writing back to the MemoryStream. You want:

using (BinaryWriter bw = new BinaryWriter(fs))

Having said that, this is a pretty nasty way of writing to a file, with all kinds of unnecessary steps. Hopefully this was just experimentation trying to work out why something else wasn't working - but if your real code is actually like this, please give details of what you're trying to do and we can help you tidy it up.

OTHER TIPS

You are using the MemoryStream ms for both input and output. Change the line

using (BinaryWriter bw = new BinaryWriter(ms))

to

using (BinaryWriter bw = new BinaryWriter(fs))

Alternatively:

File.WriteAllText("myfile", "mytext");

You are writing to text wtih the hardest way possible. you should use File.WriteAllText (as Adam says) or Append text method. If you want to use a writer with special encoding than you should use StreamWriter, since it works with text data and you can set the Encoding of the file.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top