Avatar billede maxmuldjord Nybegynder
19. december 2004 - 20:14 Der er 15 kommentarer og
1 løsning

Gemme en fil, Streamwriter

Hej

Mens jeg venter på at min lærer kommentere på en opgave jeg har gang i er jeg ved at lave en mere. Jeg har et program (et telefonregister) som jeg i øvrigt fik kanon hjælp til af Arne. Nu skal jeg til at lave det så jeg kan save og loade det. Emnet er ikke særlig godt beskrevet så :
Når det nu er en telefonbog (med numre og navne) kan jeg så i det hele taget benytte StreamReader og StreamWriter? Som det står beskrevet er det kun til tekst. Jeg kører kun programmet i konsollen, kan jeg lave min StreamReader / Writer i min main eller skal der oprettes en helt ny klasse ? Det skal ikke være noget forkromet noget!
Avatar billede arne_v Ekspert
19. december 2004 - 20:18 #1
Selvfølgelig kan du gemme med StreamWriter og hente med StreamReader.

Jeg ville nok lave en WriteToFile og ReadFromFile metode i klassen til at gøre
det med.
Avatar billede maxmuldjord Nybegynder
19. december 2004 - 20:23 #2
Hej Arne

Jeg vender tilbage med point i det andet spørgsmål vi har kørende når jeg lige for vendt noget med min lærer, der er nemlig mere jeg skal have spurgt om

8>)

Skal jeg forstå det sådan at du ville lave en helt ny klasse til at gøre det med eller en metode i en af de eksisterende klasser?
Avatar billede arne_v Ekspert
19. december 2004 - 20:38 #3
Jeg ville tilføje de metoder til den klasse der skal gemmes/hentes.
Avatar billede maxmuldjord Nybegynder
19. december 2004 - 20:46 #4
ok, jeg vil mene at det er nedenstående klasse. Men i vores bog er der kun et eksempel med FileInfo hvor man indtaster et par tekstlinier som den så gemme i en forudbestemt fil. Kan jeg lave det så man kan angive et filnavn selv?

Klassen jeg vil gemme i kommer her:

public class PhoneBook
    {
        private ArrayList list;
       
        public PhoneBook()
        {
            list = new ArrayList();
        }
       
        public void Add(Person p)
        {
            list.Add(p);
        }
       
        public void Add(string name, string phonenumber)
        {
            Add(new Person(name, phonenumber));
        }
       
        public Person FindByName(string name)
        {
            for(int i = 0; i < list.Count; i++)
            {
                Person p = (Person)list[i];
                if(p.Name == name)
                {
                    return p;
                }
            }
            return null;
        }
         
        public Person FindByPhoneNumber(string phonenumber)
        {
            for(int i = 0; i < list.Count; i++)
            {
                Person p = (Person)list[i];
                if(p.PhoneNumber == phonenumber)
                {
                    return p;
                }
            }
            return null;
        }
       
        public void RemoveByName(string name)
        {
            Person p = FindByName(name);
            if(p != null)
            {
                list.Remove(p);
            }
        }

        public void RemoveByPhoneNumber(string phonenumber)
        {
            Person p = FindByPhoneNumber(phonenumber);
            if(p != null)
            {
                list.Remove(p);
            }
        }
       
        public void Print(TextWriter tw)
        {
            for(int i = 0; i < list.Count; i++)
            {
                tw.WriteLine(list[i]);
            }
        }
    }
Avatar billede arne_v Ekspert
19. december 2004 - 20:50 #5
Den kunne vel se ud som;

        public void WriteToFile(String filename)
        {
            StreamWriter sw = new StreamWriter();
            for(int i = 0; i < list.Count; i++)
            {
                Person p = (Person)list[i];
                sw.WriteLine(p.Name);
                sw.WriteLine(p.PhoneNumner);
            }
            sw.Close();
        }
Avatar billede arne_v Ekspert
19. december 2004 - 20:51 #6
Bemærk at jeg udskriver navn og telefon nummer på hver sin linie - det gør det nemmere,
når det skal læses ind igen.
Avatar billede maxmuldjord Nybegynder
19. december 2004 - 20:54 #7
Tak, Arne.

jeg forsøger mig og vender tilbage! Men ikke før imorgen, det har været en lang dag der er gået alt for hurtigt.
Avatar billede arne_v Ekspert
19. december 2004 - 20:55 #8
"en lang dag der er gået alt for hurtigt"

det lyder som om deadline for aflevering nærmer sig !
Avatar billede maxmuldjord Nybegynder
19. december 2004 - 21:12 #9
næ det kan man ikke sige, jeg ville gerne være færdig med de 2 opgaver før jul men jeg har lige til uge 3. Jeg kan godt lide at være i god tid, når jeg bliver færdig med disse konsolopgaver glæder jeg mig til at komme til at lave noget der er kommer på skærmen. Nu skal jeg have fundet mig et lille projekt jeg kan gå og pusle lidt med.
Men det med at tiden går hurtigt - ja, jeg syntes lige jeg er stået op men jeg var oppe ved 6 tiden i morges og nu er dagen væk, det går bare alt for hurtigt. Arne, hvis du sommetider vil have en "hyggesnak" kan du altid eller næsten altid finde mig på min MSN tommy (at) empty-site.org.
Avatar billede maxmuldjord Nybegynder
19. december 2004 - 21:38 #10
og jeg glemte, skulle du komme på de kanter her helt ovre i det "Wilde West" jylland er der altid en frokost eller middag klar, bare sig til!
Jeg vender tilbage imorgen !
Avatar billede arne_v Ekspert
19. december 2004 - 22:16 #11
Jeg bruger aldrig IM programmer - kun email.

Og pas på - jeg kommer til Jylland en gang imellem. Jeg har trods alt levet
de første 32 år af mit liv i Jylland.
Avatar billede maxmuldjord Nybegynder
20. december 2004 - 06:40 #12
jamen du er meget velkommen, vi bor herude hvor kragerne flyver baglæns 8>) og min mail kan du godt få - tommy (at) manniken.dk
Nu skal jeg lige have lidt kaffe og så skal jeg til at se på mine opgaver.
Avatar billede maxmuldjord Nybegynder
20. december 2004 - 18:24 #13
Arne

Når du går sådan her :

public void WriteToFile(String filename)
        {
            StreamWriter sw = new StreamWriter();
            for(int i = 0; i < list.Count; i++)
            {
                Person p = (Person)list[i];
                sw.WriteLine(p.Name);
                sw.WriteLine(p.PhoneNumner);
            }
            sw.Close();
        }
så er det kun de enkelte linier der bliver gemt, ikke? Det er ikke selve programmet? Og i public void WriteToFile(String filename)skal jeg da have stien med ? altså: (String C:\MyFile\phonebook.txt eller noget i den stil? Jeg fik ikke set så meget på sagerne idag, tiden er som sædvanligt løbet nu må jeg se om jeg kan få lavet lidt.
Avatar billede arne_v Ekspert
20. december 2004 - 19:37 #14
Ja. Hvis listen indeholder 7 personer, så gemmer den 14 linier.

Ja. Stien skal med.
Avatar billede maxmuldjord Nybegynder
21. december 2004 - 19:34 #15
Tak Arne.

det ser ud til at min lærer er gået på juleferie så det kan være at du skulle smide et svar så jeg ikke glemmer det. Jeg kan så altid vende tilbage med flere spørgsmål efter jul. Også her http://www.eksperten.dk/spm/572588 Husk min invitation, du skal være meget velkommen,der manglede bare. Jeg er ikke hjemme i julen,da skal jeg på en, syntes jeg selv, velfortjent ferie i Polen. Men ellers er vi her for det meste.
Avatar billede arne_v Ekspert
21. december 2004 - 19:40 #16
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