UniversalSerializer icon indicating copy to clipboard operation
UniversalSerializer copied to clipboard

System.ArgumentException: Stream was not readable (using CryptoStream)

Open Jaqos opened this issue 6 years ago • 0 comments

I am using UniversalSerializer 3.18.3.14 and Unity 2019.1

  • Writing to a FileStream works, but writing to a CryptoStream throws an exception.

  • The exception only occurs when using the BinarySerializationFormatter.

  • Error does not happen when using XML or JSON serialization formatter.

This code works:

using (FileStream file = File.Create("/Users/Me/Desktop/File.txt"))
{
    var s = new UniversalSerializer(file);
    s.Serialize(myString);
}

This code also works: (CryptoStream, using XmlSerializationFormatter)

using (FileStream file = File.Create("/Users/Me/Desktop/File.txt"))
{
    using (CryptoStream csEncrypt = new CryptoStream (file, encryptor, CryptoStreamMode.Write))
    {
        var s = new UniversalSerializer(csEncrypt, SerializerFormatters.XmlSerializationFormatter);
        s.Serialize(myString);
    }
}

This code throws error: System.ArgumentException: Stream was not readable (CryptoStream, using BinarySerializationFormatter)

using (FileStream file = File.Create("/Users/Me/Desktop/File.txt"))
{
    using (CryptoStream csEncrypt = new CryptoStream (file, encryptor, CryptoStreamMode.Write))
    {
        var s = new UniversalSerializer(csEncrypt, SerializerFormatters.BinarySerializationFormatter);
        s.Serialize(myString);
    }
}

The error:

ArgumentException: Stream was not readable.
System.IO.BinaryReader..ctor (System.IO.Stream input, System.Text.Encoding encoding, System.Boolean leaveOpen) (at <3a07e6401b5d4cc98f7be596cb2130ba>:0)
System.IO.BinaryReader..ctor (System.IO.Stream input, System.Text.Encoding encoding) (at <3a07e6401b5d4cc98f7be596cb2130ba>:0)
UniversalSerializerLib3.FileTools.BinaryReader2..ctor (System.IO.Stream input, System.Text.Encoding encoding) (at Assets/UniversalSerialier3.18.3.14/Common/BinaryReaderWriter2.cs:37)
UniversalSerializerLib3.BinaryDeserializationFormatter..ctor (UniversalSerializerLib3.Parameters parameters) (at Assets/UniversalSerialier3.18.3.14/Common/BinarySerializationFormatter.cs:229)
UniversalSerializerLib3.SerializationFormatter.ChooseDefaultDeFormatter (UniversalSerializerLib3.Parameters parameters) (at Assets/UniversalSerialier3.18.3.14/Common/Serializer.cs:113)
UniversalSerializerLib3.UniversalSerializer..ctor (UniversalSerializerLib3.Parameters parameters) (at Assets/UniversalSerialier3.18.3.14/Common/UniversalSerializer.cs:187)
UniversalSerializerLib3.UniversalSerializer..ctor (System.IO.Stream stream) (at Assets/UniversalSerialier3.18.3.14/Common/UniversalSerializer.cs:119)
CryptoStreamErrorExample.Save () (at Assets/CryptoStreamErrorExample.cs:46)
CryptoStreamErrorExample.Update () (at Assets/CryptoStreamErrorExample.cs:18)

Full Unity script: CryptoStreamErrorExample.cs.txt

Is this a problem with UniversalSerializer or my code?

Jaqos avatar Mar 08 '19 04:03 Jaqos