Can't write to file using binarywriter
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.开发者_如何学CGetBytes(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();
}
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.
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.
精彩评论