Не могу записать в файл с помощью бинарной записи - PullRequest
2 голосов
/ 15 июля 2010

Почему этот код не записывает мою строку в файл:

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

        }

Ответы [ 4 ]

9 голосов
/ 15 июля 2010

Посмотрите на эту строку:

using (BinaryWriter bw = new BinaryWriter(ms))

Вы пишете обратно в MemoryStream .Вы хотите:

using (BinaryWriter bw = new BinaryWriter(fs))

Сказав это, это довольно неприятный способ записи в файл со всеми видами ненужных шагов.Надеюсь, это был всего лишь эксперимент, пытаясь понять, почему что-то еще не работает - но если ваш реальный код на самом деле , как это, пожалуйста, опишите подробно, что вы пытаетесь сделать, и мы можем помочь вам привести в порядокэто.

3 голосов
/ 15 июля 2010

Вы используете MemoryStream ms для ввода и вывода. Изменить строку

using (BinaryWriter bw = new BinaryWriter(ms))

до

using (BinaryWriter bw = new BinaryWriter(fs))
0 голосов
/ 15 июля 2010

Вы пишете тексту самым сложным способом.Вы должны использовать File.WriteAllText (как говорит Адам) или метод добавления текста.Если вы хотите использовать устройство записи со специальной кодировкой, вам следует использовать StreamWriter, поскольку он работает с текстовыми данными и вы можете установить кодировку файла.

0 голосов
/ 15 июля 2010

В качестве альтернативы:

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