c# - BinaryFormatter in cross-platform application -


i'am creating cross-platform application. i'am trying deserialize file in android. working fine in windows. code:

[serializable] //serializacja potrzebna zapisywania pliku. public class dane {     public byte[] id { get; set; }     public byte[] login { get; set; }     public byte[] haslo { get; set; }     public byte[] link { get; set; }     public byte[] opis { get; set; }     public byte[] datawygasniecia { get; set; }      public static list<dane> wczytajdanedolisty(string sciezka) //deserializacja wczytywanie danych z pliku     {         try         {             if (file.exists(sciezka)) //jesli plik istnieje             {                 stream str = file.openread(sciezka); //tworzenie strumienia                 var desrializer = new binaryformatter();//obiekt deserializujący                 //var desrializer = new xmlserializer(typeof(list<dane>)); //dla xml                 var listadanych = (list<dane>)desrializer.deserialize(str); //deserializacja listy<dane>                 str.close();                 return listadanych;                }             throw new exception();         }         catch (exception)         {             return null; //jesli plik nie istnieje, zwracamy null         }     }     public static void zapiszdanedopliku() //serializacja zapisywanie danych pliku     {         stream str = file.create(zmienneglobalne.sciezkadopliku); //tworzenie strumienia         var serializer = new binaryformatter(); //obiekt serializujący         serializer.serialize(str, zmienneglobalne.listawpisow);         //serializacja danych strumienia(w tym wypadku pliku)         str.close();     } } 

when try in android using xamarin - debuger stop working, without exception message. error appears in line:

var listadanych = (list<dane>)desrializer.deserialize(str); 

if i'am using xmlserializer, wokring without problem. how can deserialize binnary file? if binnaryformater not supported in android, can use other methods serialize file. xml serialization last way, because want file hard read possible.

if want platform-agnostic use serializers based on json or xml. binary serialisation produces smaller file , faster, harder code , may not platform-agnostic.

if inclined use binary serialisation have @ protobuf serialiser.

note no serialisation can protect file. if wants have inside - will. if want protect contents you'd follow steps:

  • figure out way securely store encryption key
  • get bytes serialised data
  • encrypt these bytes key , strong algorithm (such aes)
  • save result binary file

if need send data elsewhere, submitting web-service, you'd want encode bytes base64.

reading file works in opposite order


Comments

Popular posts from this blog

IF statement in MySQL trigger -

c++ - What does MSC in "// appease MSC" comments mean? -

javascript - Blogger related post gadget image Resize s72-c [ Need Expert Help ] -