2

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

        }
4

4 に答える 4

10

この行を見てください:

using (BinaryWriter bw = new BinaryWriter(ms))

MemoryStreamに書き戻しています。あなたが欲しい:

using (BinaryWriter bw = new BinaryWriter(fs))

そうは言っても、これはファイルに書き込む非常に厄介な方法であり、あらゆる種類の不要な手順が含まれます。うまくいけば、これは他の何かが機能しなかった理由を解明しようとする実験でしたが、実際のコードが実際にこのようなものである場合は、実行しようとしていることの詳細を教えてください。

于 2010-07-15T09:26:51.200 に答える
3

入力と出力の両方にMemoryStreammsを使用しています。行を変更します

using (BinaryWriter bw = new BinaryWriter(ms))

using (BinaryWriter bw = new BinaryWriter(fs))
于 2010-07-15T09:27:33.813 に答える
0

または:

File.WriteAllText("myfile", "mytext");
于 2010-07-15T09:26:57.393 に答える
0

あなたは可能な限り難しい方法でテキストに書いています。File.WriteAllText(Adamが言うように)またはAppendtextメソッドを使用する必要があります。特別なエンコーディングでライターを使用する場合は、StreamWriterを使用する必要があります。これは、テキストデータで機能し、ファイルのエンコーディングを設定できるためです。

于 2010-07-15T10:39:18.157 に答える