【问题标题】:XML writer and Memory Stream c#XML 编写器和内存流 c#
【发布时间】:2012-10-11 20:43:19
【问题描述】:

我正在使用 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();
        }
    }      

【问题讨论】:

    标签: c# memorystream xmlwriter


    【解决方案1】:

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

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

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

    1. 写完后打电话给writer.Flush()
    2. 在开始读取流之前将stream.Position 设置回0

    【讨论】:

    • writer.Flush() 是我所缺少的。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    相关资源
    最近更新 更多