» »

C# serilizacija String

C# serilizacija String

matto87 ::

Naslednja metoda ne serializira Stringa. Isto metodo sem uporabil za objekte, ki sem jih sam napisal in normalno deluje. A je možno da String v c# ni serializable?

public void serilizirajM()
{
System.IO.Stream str = System.IO.File.OpenWrite("datoteka.dat");
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter formatter =
new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
formatter.Serialize(str, mojString);
str.Close();
}

Morda ve kdo kako bi enostavno serializiral nek String? Hvala.

robotek87 ::

Saj ta koda mora serializirat string.. datoteko ti shrani v "bin\Debug"

matto87 ::

Res je, datoteko ustvari. Vendar je prazna. String pa ni pa ni prazen.

BlueRunner ::

Ahem.... ali si prepričan, da je prazna (dolga 0 bytov)? Serializacija namreč ni isti postopek, kot navadno pisanje nizov v datoteko. To pomeni, da so podatki zapisani v binarni obliki, "type" iz ukazne vrstice ali pa kakšen drug podoben program, pa kodo \0 v datoteki interpretira kot konec datoteke.

vojko20 ::

včasih pomaga če daš pred .close() še str.flush();

Zgodovina sprememb…

  • spremenilo: vojko20 ()

matto87 ::

0 bytov je velikost datoteke. Sem poiskusil tudi s str.Flush(); pa ni pomagalo... Še vedno samo ustvaro datoteko, ki je pa prazna. Vendar mislim da sem odkril težavo. Iz neznanega razloga mi je to isto datoteko seriliziralo še v eno drugo mapo. Tisa datoteka pa ni prazna. Tako da bom to preučil pa verjamem da bo pol delalo.

Hvala vam za pomoč.

Zgodovina sprememb…

  • spremenil: matto87 ()

matto87 ::

V stringu sem imel namreč pot do shranjenega mp3-ja na disku. Datoteko mi je ustvarilo na to lokaciji(sicer ne vem zakaj), kjer sem imel nastavljeno pot. Deserilizacija pa se je izvedla normalno nad datoteko iz mape bin/debug.

BlueRunner ::

No ja, samo da si našel to pogrešano datoteko. :D

Sicer ne vem, če je to v tvojem primeru pomembno, vendar pa je trenutni delovni imenik vezan na posamezen proces. To pomeni, da ti ga lahko vsaka komponenta spremeni, potem pa bodo relativne poti kazale kar nekam. Če si npr. pot do MP3 datoteke dobil z uporabo (Open ali Save)FileDialog razreda, potem moraš paziti, da postaviš lastnost RestoreDirectory na true. Da ne bom tukaj predolg, si lahko v dokumentaciji prebereš kaj to naredi.

V splošnem pa je dobra praksa za datoteke, da zgradiš predvidljivo polno pot, ki jo potem uporabiš. Pri temu ti lahko pomagajo lastnosti razreda Application: StartupPath, ExecutablePath, LocalUserAppDataPath, ...


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Davčne blagajne (strani: 1 2 3 424 25 26 27 )

Oddelek: Programiranje
1344332240 (72243) Macketina
»

[c#] shrani text, tabele, slike

Oddelek: Programiranje
251505 (1111) klemen93
»

[C#] Deserializacija

Oddelek: Programiranje
181858 (1461) Cvenemir
»

branje byte[] iz MS access-ove baze

Oddelek: Programiranje
81935 (1845) BHawk
»

c++ datoteke

Oddelek: Programiranje
464038 (3527) Vesoljc

Več podobnih tem