XML编写器和内存流c#

时间:2012-10-11 20:43:20

标签: c# memorystream xmlwriter

我正在使用XmlWriter创建一个文件,XmlWriter writer = XmlWriter.Create(fileName);它正在创建一个文件然后我还有一个函数,我正在调用private void EncryptFile(string inputFile, string outputFile),它需要2个字符串输入和outpulfile,最后我有两个文件一个加密,一个不加密。我只想要一个加密文件,但是我的加密函数需要输入由XmlWriter创建的inputfile。有没有什么办法可以创建内存流并将其传递给我的函数而不是创建一个输入文件。   我的加密功能

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

1 个答案:

答案 0 :(得分:15)

您可以创建一个写入内存流的XmlWriter

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

现在,您可以将此流传递到EncryptFile函数而不是inputFile。在阅读流之前,你必须确保不要忘记这两件事:

  1. 完成写作后拨打writer.Flush()
  2. 在开始阅读信息流之前,将stream.Position设置回0