Skip to content

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

Description

@Jaqos

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions