05. januar 2007 - 11:01Der 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
Manuelle og semi-automatiske strategier for identitetsstyring virker - lige indtil nogen beder om dokumentation. For at undgå denne fare har DKTV taget kontrol over sin identitets- og adgangsstrategi.
Slettet bruger
05. januar 2007 - 11:38#1
Mit gæt ville være at du bruger FileMode.Create, og ikke Append
Synes godt om
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
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); } }
hmm nå whatever.. Du har jo svaret på mit spørgsmål :)
Læg svar for points...
Synes godt om
Slettet bruger
05. januar 2007 - 12:03#11
svar:)
Synes godt om
Ny brugerNybegynder
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.