Avatar billede sb Nybegynder
16. april 2001 - 12:04 Der er 6 kommentarer og
3 løsninger

Problemer med at læse fra fil

Jeg forsøger at hente indholdet af en textfil med :
-------
public void actionPerformed(ActionEvent evt) {
    if (evt.getSource() == hent) {
        filinn = new BufferedReader(
                    new FileReader(\"test.txt\"));

        filinn.close();
    }
-------

Men det giver følgende fejl :
---------
c:\\jdk1.3\\oving\\oving7.java:33: unreported exception java.io.FileNotFoundExcepti
on; must be caught or declared to be thrown
                                        new FileReader(\"test.txt\"));
                                        ^
c:\\jdk1.3\\oving\\oving7.java:35: unreported exception java.io.IOException; must b
e caught or declared to be thrown
                filinn.close();
                      ^
2 errors
----------

Nogen som kan fortælle mig, hvad jeg har gjort galt?
Avatar billede lens Nybegynder
16. april 2001 - 12:17 #1
Det kunnde godt se ud til at du ikke har \"handlet\" dine exceptions:-)

smid dette stykke kode med:

try{

//her indsættes det stykke kode der er tvivlsomt

}
catch(Exception e)  //kan eventuelt opdeles i de enkelte exceptions
{
//her kan du håndtere undtagelserne

}
Avatar billede lens Nybegynder
16. april 2001 - 12:20 #2
I øvrigt ville det være pænest at holde GUI og funktionalitet for sig - men det er nok bare mig :-)
Avatar billede mr.gessle Nybegynder
16. april 2001 - 12:29 #3
I øvrigt er det grimt, at initiere filereader og bufferedreader hver ENESTE gang der trykkes på \"hent\". Smid det i en metode for sig og initier det før du implementerer actionPerformed metoden. Det sparer også cpu-tid.

/mr. gessle
Avatar billede mr.gessle Nybegynder
16. april 2001 - 12:30 #4
Men lens har ret. Du mangler en try/catch-blok.
Avatar billede lbhansen Nybegynder
16. april 2001 - 18:05 #5
når du henter filen test.txt, skal den ligge i samme katalog, som du kører applicationen, ellers skal du bruge en fuld sti til filen, men de andre har ret. Try catch er godt, hvis du ikke gider se den form for beskeder, selvom denne er ret sigende: FileNotFoundException
Avatar billede disky Nybegynder
17. april 2001 - 08:19 #6
lav
public void actionPerformed(ActionEvent evt) {
    if (evt.getSource() == hent) {
        filinn = new BufferedReader(
                    new FileReader(\"test.txt\"));

        filinn.close();
    }

om til:

public void actionPerformed(ActionEvent evt)
{
    if (evt.getSource() == hent)
    {

        filinn = new BufferedReader( new FileReader(\"test.txt\"));

        filinn.close();
    }
Avatar billede disky Nybegynder
17. april 2001 - 08:22 #7
ARG hvor jeg hader når eksperten laver lort i det
Avatar billede disky Nybegynder
17. april 2001 - 08:24 #8
Her kommer løsningen :-)

Byt
public void actionPerformed(ActionEvent evt) {
    if (evt.getSource() == hent) {
        filinn = new BufferedReader(
                    new FileReader(\"test.txt\"));

        filinn.close();
    }

ud med:


public void actionPerformed(ActionEvent evt)
{
    if (evt.getSource() == hent)
    {
        try
        {
            filinn = new BufferedReader(new FileReader(\"test.txt\"));
            filinn.close();
        }
        catch (FileNotFoundException e)
        {
            //Din fil findes ikke (angiv evt. hele pathen)
        }
        catch (IOException e)
        {
            //En eller anden IO error
        }
    }
}
Avatar billede disky Nybegynder
17. april 2001 - 08:25 #9
mr. geesler:

Det kan godt være det sparer CPU tid at initiere filen før actionperformeren.

Men til gengæld har du en åben fil hele tiden, det er heller ikke pæn programmering
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