10

私は XmlWriter を使用してファイルを作成しています。それはファイルを作成しています。次に、 2 つの文字列入力と outpulfile を受け取るXmlWriter writer = XmlWriter.Create(fileName);関数をもう 1 つ呼び出し ています。private void EncryptFile(string inputFile, string outputFile)暗号化されたファイルが 1 つだけ必要ですが、暗号化機能では、XmlWriter によって作成された入力ファイルが必要です。入力ファイルを作成する代わりに、メモリストリームを作成してそれを関数に渡す方法はありますか? 私の暗号化機能

private void EncryptFile (string inputFile, string outputFile)
            string password = @"fdds"; // Your Key Here
            UnicodeEncoding UE = new UnicodeEncoding();

            byte[] key = UE.GetBytes(password);
            string cryptFile = outputFile;
            FileStream fsCrypt = new FileStream(cryptFile, FileMode.Create);

            RijndaelManaged RMCrypto = new RijndaelManaged();


            CryptoStream cs = new CryptoStream(fsCrypt,RMCrypto.CreateEncryptor(key,key),CryptoStreamMode.Write);

            FileStream fsIn = new FileStream(inputFile, FileMode.Open);

            int data;
            while ((data = fsIn.ReadByte()) != -1)
                cs.WriteByte((byte)data);
            cs.FlushFinalBlock();
            fsIn.Close();
            cs.Close();
            fsCrypt.Close();
        }
    }      
4

1 に答える 1

18

XmlWriterメモリ ストリームに書き込む を作成できます。

var stream = new MemoryStream();
var writer = XmlWriter.Create(stream);

EncryptFileこれで、このストリームを の代わりに関数に渡すことができますinputFile。ストリームを読む前に、次の 2 つのことを忘れないようにする必要があります。

  1. writer.Flush()書き終わったら電話してください。
  2. ストリームの読み取りを開始する前に設定stream.Positionを戻します。0
于 2012-10-11T20:50:33.797 に答える