Avatar billede jimgordon Nybegynder
25. november 2004 - 10:02 Der er 4 kommentarer og
1 løsning

Gem/læse til/fra binær fil

1.
Har nogen noget kode der viser hvordan man gemmer/læser data i en binær fil. Plejer at gemme til ACSII inifiler, men brugeren skal ikke kunne se indholdet af denne fil.
Eksempel på en ACSII inifil:
Gem=0
Hent=1
Vis=Lager
Antal=200
Hvordan ser koden ud hvis det var til en binærfil.Har prøvet at lege med en Stream, men kan ikke få omsat min tekstinformation, til at kunne skrive og læse til en binær fil.
2.
Kan man gemmem hele objekter fra ens egne klasser ned i en binær fil og så suge dem op igen klar til brug, med de attributer og metoder, de havde da de blevt gemt. Eller er det overkill.

Jim
Avatar billede aaberg Nybegynder
25. november 2004 - 10:29 #1
Du kan bruge den feature der hedder serialization. Dette er en metode til at gemme objekter i en fil. Dette kan både gøres med xml tekst, og binært. Du er nok mest interesseret i den binære måde. Nedensrtående er et eksempel på dette.

Først skal man lave en serializable klasse. Hvis man skriver [serializable], så kan hele objektet gemmes, ellers er der nogle regler for, hvilke variabler o.l. der kan gemmes. Du kan læse mere i msdn.

[Serializable]
public class MyObject {
  public int n1 = 0;
  public int n2 = 0;
  public String str = null;
}

Når du så skal gemme dit objekt i en fil, foregår det således:

MyObject obj = new MyObject();
obj.n1 = 1;
obj.n2 = 24;
obj.str = "Some String";
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("MyFile.bin", FileMode.Create, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, obj);
stream.Close();


Håber du kan bruge dette.
Avatar billede jimgordon Nybegynder
25. november 2004 - 10:32 #2
ok, det ser forståligt ud, men hvad når man skal læse den binære fil igen?
Avatar billede aaberg Nybegynder
25. november 2004 - 13:12 #3
Nåh ja, jeg glemte at skrive hvordan man læser filen igen, sorry. Nedenstående eksempel læser filen, og loader et objekt med dataene.

IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("MyFile.bin", FileMode.Open, FileAccess.Read, FileShare.Read);
MyObject obj = (MyObject) formatter.Deserialize(stream);
stream.Close();
Avatar billede jimgordon Nybegynder
25. november 2004 - 14:15 #4
Hey det styrer for vild. Tusinde tak. Det cast voldte problemer.
Er du til point må du smide et svar.

Jim
Avatar billede aaberg Nybegynder
25. november 2004 - 14:17 #5
Ja, det skal man lige vide hvordan man gør, ellers kan det godt være lidt tricky. Men, her er et svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester