Avatar billede siredward Nybegynder
04. november 2004 - 18:24 Der er 13 kommentarer og
1 løsning

Problemer med at skrive til en fil.

Hej, jeg sidder netop og arbejder med en opgave som jeg er blevet stillet på uni. Den går ud på at lave et program som blandt andet skal kunne læse og skrive til en fil (samt kryptere og pakke den m.m.), men jeg er allerede kørt lidt fast.

Jeg kan godt få den til at læse filen (og gemme den i et ArrayList), men den vil ikke læse den. Vi fik lidt hjælp til koden der skulle læse filen og det endelige resultat ser sådan her ud:

    // Læser en tekstfil ind.
    public List readFile(String filename)
    {
        ArrayList list = new ArrayList();       
        try
        {
            FileReader inFile = new FileReader(filename);   
            int ch = inFile.read();
            while(ch != -1)
            {
                list.add(new Integer((int)ch));
                ch = inFile.read();
            }
            inFile.close();
        }
        catch(IOException e)
        {
            System.out.println(e);
        }
        return list;
    }


Og det virker fintnok. Hr er koden der gerne skulle skrive til en fil. Det er noget jeg har siddet og klattet med og intet virker. Den er ikke engang færdig:

    // Skriver fil til disk.
    public void writeFile(String filename,List chars)
    {
        try
        {
            FileWriter outFile = new FileWriter(filename);
            char ch;
            while(ch != -1)
            {
                outFile.write(ch);
            }
            outFile.close();
        }
        catch(IOException e)
        {
            System.out.println(e);
        }
    }

Nogen idet om hvad jeg kan gøre?


Mvh: Lauge Jepsen
Avatar billede siredward Nybegynder
04. november 2004 - 18:26 #1
Rettelse til linje 7:

",men den vil ikke læse den" = ",men den vil ikke skrive den"
Avatar billede arne_v Ekspert
04. november 2004 - 18:27 #2
Du skal ikke have en while løkke når du skriver.

Lav en for løkke som skriver noget.
Avatar billede arne_v Ekspert
04. november 2004 - 18:29 #3
Eksempel:

for(int i = 0; i < 100; i++) outFile.write('A');

udskriver 100 A'er.
Avatar billede siredward Nybegynder
04. november 2004 - 19:11 #4
OK, men chars er en ArrayList der indeholder teksten der skal skrives til filen, tegn for tegn. Hvordan får jeg den til at skrive den?
Avatar billede arne_v Ekspert
04. november 2004 - 19:14 #5
Hvad indeholder den ArrayList ? Objects ? Strings ? Characters ?
Avatar billede arne_v Ekspert
04. november 2004 - 19:15 #6
Jeg er ret siker på at du er bedre stillet med at lave en FileOutputStream og wrappe den i
en PrintWriter.
Avatar billede siredward Nybegynder
04. november 2004 - 19:48 #7
Den indeholder characters. Den skal bare skrive dem en efter en ind i filen.
Avatar billede arne_v Ekspert
04. november 2004 - 19:58 #8
Prøv:

for(int i = 0; i < list.length(); i++)
{
  outFile(((Character)list.get(i)).charValue());
}
Avatar billede siredward Nybegynder
04. november 2004 - 22:04 #9
Den giver mig fejl når jeg compiler.

cannot resolve symbol - method length()

Er der noget bestemt jeg skal importere for at få det til at virke?
Avatar billede arne_v Ekspert
04. november 2004 - 22:05 #10
for(int i = 0; i < list.size(); i++)

sorry (det er String som har en length metode)
Avatar billede siredward Nybegynder
04. november 2004 - 22:33 #11
Er der ikke en måde man kan tælle en Array på? Det ville da være oplagt.
Avatar billede arne_v Ekspert
04. november 2004 - 22:36 #12
Hvad mener du med tælle ?

enarraylist.size() giver antal elementer i en ArrayList

etarray.length() giver antal elementer i et array
Avatar billede siredward Nybegynder
11. november 2004 - 17:36 #13
Ok, jeg fik det til at virke.

Skriv et svar, så smider jeg lige points efter dig :)
Avatar billede arne_v Ekspert
11. november 2004 - 19:13 #14
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
Kurser inden for grundlæggende programmering

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