10

我正在使用 XmlWriter 创建一个文件,XmlWriter writer = XmlWriter.Create(fileName);它正在创建一个文件,然后我还有一个正在调用的函数, private void EncryptFile(string inputFile, string outputFile)它需要 2 个字符串输入和输出文件,最后我有两个文件,一个是加密的,一个不是。我只想要一个加密文件,但是对于我的加密功能,它需要由 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. 在阅读流之前,您必须确保不要忘记这两件事:

  1. writer.Flush()写完后打个电话。
  2. 在开始阅读流之前设置stream.Position回。0
于 2012-10-11T20:50:33.797 回答