Avatar billede mikkel_sommer Nybegynder
04. oktober 2005 - 12:54 Der er 2 kommentarer og
1 løsning

Skriv og læs objekt til og fra fil

Jeg kunne godt tænke mig at være i stand til at skrive et objekt ud til en fil, eksempelveis en txt fil, og derefter være istand til at hente det ind igen.

Jeg har forsøgt mig med filestreams men er da nødt til at skrive og hente en attribut ad gangen, ville gerne håndtere hele objektet på en gang.


Min kode for skriv:

string file = "\\Objekt.txt";
                       
FileStream oFs;
StreamWriter oSw;

oFs = new FileStream(file,
FileMode.Create,
FileAccess.Write);

oSw = new StreamWriter(oFs);

oSw.BaseStream.Seek(0, System.IO.SeekOrigin.End);
oSw.WriteLine(o.getNavn());
oSw.WriteLine(o.getAlder());
oSw.Flush();

oFs.Close();



Min kode for hent:

string file = "\\Objekt.txt";

FileStream oFs;
StreamReader oSr;

oFs = new FileStream(file, FileMode.Open, FileAccess.Read);
oSr = new StreamReader(oFs);

textBox3.Text = oSr.ReadLine();
textBox4.Text = oSr.ReadLine();
oSr.Close();


Håber der er nogen som kan hjælpe ...
Avatar billede arne_v Ekspert
04. oktober 2005 - 13:22 #1
Brug serialisering.

Eksempel:

using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable]
public class C
{
    private int iv;
    private double xv;
    private string sv;
    public int Iv
    {
        get
        {
            return iv;
        }
        set
        {
            iv = value;
        }
    }
    public double Xv
    {
        get
        {
            return xv;
        }
        set
        {
            xv = value;
        }
    }
    public string Sv
    {
        get
        {
            return sv;
        }
        set
        {
            sv = value;
        }
    }
    public override string ToString()
    {
        return ("[" + iv + "," + xv + "," + sv + "]");
    }
}

class MainClass
{
    public static void Main(string[] args)
    {
        C c1 = new C();
        c1.Iv = 123;
        c1.Xv = 123.456;
        c1.Sv = "ABC";
        C c2 = new C();
        c2.Iv = 321;
        c2.Xv = 654.321;
        c2.Sv = "CBA";
        BinaryFormatter bf = new BinaryFormatter();
        FileStream outf = File.Create("C:\\c.ser");
        bf.Serialize(outf, c1);
        bf.Serialize(outf, c2);
        outf.Close();
        FileStream inf = File.OpenRead("C:\\c.ser");
        C c3 = (C)bf.Deserialize(inf);
        C c4 = (C)bf.Deserialize(inf);
        inf.Close();
        Console.WriteLine(c3);
        Console.WriteLine(c4);
    }
}
Avatar billede mikkel_sommer Nybegynder
04. oktober 2005 - 13:53 #2
Cool det virker, tak for hjælpen.

Smid et svar :-)
Avatar billede arne_v Ekspert
04. oktober 2005 - 13:55 #3
kommer her
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