Avatar billede haolan Nybegynder
05. januar 2007 - 11:01 Der er 10 kommentarer og
1 løsning

Gemme en arraylist med BinaryFilestream

Hey eksperter..

Går PT på datamatikerstudiet, hvilket tilsyneladene er ramt hårdt af skolebesparelser :(

Vi har i skolen fået forklaret hvordan man anvender BinaryFilestream når man skal gemme.. Men i lærerens eksempel fik vi kun vist hvordan man indsætter manuelt som fx:

            //OPRET BRUGEROBJEKT
            bruger = brugerCollection.OpretBruger(2);
            bruger.SetNavn("Bent Åge");

            bruger = brugerCollection.OpretBruger(3);
            bruger.SetNavn("Birger Ost");

            MessageBox.Show("Bruger oprettet med ID: #" + brugernr);

            //SKAB FIL FOR SKRIVNING
            FileStream filestream = new FileStream(FILNAVN, FileMode.Create, FileAccess.Write);

            //TILKNYT BINARY-FORMATER TIL FILESTREAM
            BinaryFormatter binFormatter = new BinaryFormatter();

            //SERIALISÉR BRUGERCOLLECTION TIL FILESTREAM
            binFormatter.Serialize(filestream, brugerCollection);

            //LUK FILESTREAM
            filestream.Close();

Mere var der ikke tid til.
Den virker som endt også ganske udemærket, men problemet er bare at nu står jeg og skal indsætte mine brugere fra en arraylist, der kan indeholde mange brugere..

Hvordan får jeg dem gemt?

Har forsøgt mig med noget foreach, men får altid kun gemt den senest oprettede bruger i filen :S
Avatar billede Slettet bruger
05. januar 2007 - 11:38 #1
Mit gæt ville være at du bruger FileMode.Create, og ikke Append
Avatar billede Slettet bruger
05. januar 2007 - 11:40 #2
Når du siger Create, opretter den en ny fil hver gang (overskriver) hvis du bruger Append, opretter den en ny hvis den ikke findes, eller fortsætter på en eksisterende fil
Avatar billede haolan Nybegynder
05. januar 2007 - 11:47 #3
oki..

Oki.. Men hvad hvis man så vil slette en bruger fra filen igen? Så er det da nemmere den overskriver eller hvad??
Avatar billede Slettet bruger
05. januar 2007 - 11:48 #4
hmm, du kan vel gennemsøge filen efter noget bestemt text, og slette det
Avatar billede haolan Nybegynder
05. januar 2007 - 11:53 #5
Den virker stadig ikke selvom jeg bruger append..

Nu gemmer den slet ikke noget i filen :S
Avatar billede haolan Nybegynder
05. januar 2007 - 11:56 #6
ahh jo sorry den gemmer det godt nok..

Men den kan kan kun trække 1 ud :S
Avatar billede Slettet bruger
05. januar 2007 - 11:57 #7
hvordan trækker du ud?
Avatar billede haolan Nybegynder
05. januar 2007 - 12:00 #8
public void OpdaterBrugerListe()
        {
            //INDLÆS FORNØDNE KLASSER
            BrugerCollection brugerCollection;
            Bruger bruger;
            ArrayList brugere = new ArrayList();

            brugerCollection = new BrugerCollection();

            //ÅBEN FIL FOR LÆSNING
            FileStream fileStream = new FileStream(FILNAVN, FileMode.Open, FileAccess.Read);

            //TILKNYT BINARY-FORMATER TIL FILESTREAM
            BinaryFormatter binFormatter = new BinaryFormatter();

            //DESERIALISÉR FILESTREAM TIL BRUGERCOLLECTIOn
            brugerCollection = (BrugerCollection)binFormatter.Deserialize(fileStream);

            //LUK FILESTREAM
            fileStream.Close();

            //GENNEMLØB ITERATOR OG INDSÆT BRUGERE I COMBOBOKSEN
            string navn;
            int brugernr;
            if (brugerCollection.Foerste())
            {
                do
                {
                    bruger = brugerCollection.GetBruger();
                    navn = bruger.GetNavn();
                    brugernr = bruger.GetBrugerNr();
                    brugere.Add(bruger);
                    cbVælgBruger.Items.Add(navn + " (" + brugernr.ToString() + ")");
                } while (brugerCollection.Naeste());
                brugerCollection.SaveUsers(brugere);
            }
        }
Avatar billede Slettet bruger
05. januar 2007 - 12:02 #9
hmm, det ved jeg sørme ikke hvorfor
Avatar billede haolan Nybegynder
05. januar 2007 - 12:02 #10
hmm nå whatever.. Du har jo svaret på mit spørgsmål :)

Læg svar for points...
Avatar billede Slettet bruger
05. januar 2007 - 12:03 #11
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