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
Post a Comment