Avatar billede sy22 Nybegynder
22. april 2002 - 11:45 Der er 4 kommentarer og
2 løsninger

bufferedReader mangler 1. linie

Hej Alle!
I forbindelse med fremstillingen af en simpel texteditor har vi et problem.
Når vi forsøger at læse en fil gennem en bufferedReader, mangler vi første linie.
Koden ser således ud:

    public void opna() {
        try{
            JFileChooser chooser = new JFileChooser();
        int tmp = chooser.showOpenDialog(null);
        File fil = chooser.getSelectedFile();
        if (fil != null) {
            txta.setText("");
            FileReader inputStream = new FileReader(fil.getPath());
            BufferedReader inputReader = new BufferedReader(inputStream);
            String inputString = inputReader.readLine();
            while ((inputString != null)){ //&& (inputString != "null\n")) {
                inputString = inputReader.readLine();
                if (inputString != null) txta.append(inputString+"\n");
            }
                inputReader.close();
            }
        }
    catch (IOException e){
        System.out.println("error reading from disk");
    }
}

Taker For Hjælp
Avatar billede carstenknudsen Nybegynder
22. april 2002 - 11:54 #1
I skal ikke læse før løkken!
I skal istedet læse sådan her:
while ((inputString=inputReader.readLine())!=null)
Avatar billede jakoba Nybegynder
22. april 2002 - 12:03 #2
det er fordi i selv smider den væk:
            String inputString = inputReader.readLine();  // læser allerførste
            while ((inputString != null)){ //&& (inputString != "nulln")) {
                inputString = inputReader.readLine();  // læser nr 2, 3, 4, ...
                if (inputString != null) txta.append(inputString+"n");
            }

brug evt istedet:

            String inputString;
            while ((inputString=inputReader.readLine()
) != null ){
                //&& (inputString != "nulln")) {
                xta.append(inputString+"n");
            }

så er det også overflødigt med testen indeni løkken, det er jo allerede testet af while betingelsen.

mvh JakobA
Avatar billede jakoba Nybegynder
22. april 2002 - 12:05 #3
ps: skulle der ikke stå \ (baglæns skråstreg før det n?

            String inputString;
            while ((inputString=inputReader.readLine() ) != null ){
                //&& (inputString != "nulln")) {
                txta.append(inputString+"\n");
            }
Avatar billede sy22 Nybegynder
22. april 2002 - 12:16 #4
Beklager, men det giver samme resultat med koden som dette:

    public void opna() {
        try{
            JFileChooser chooser = new JFileChooser();
        int tmp = chooser.showOpenDialog(null);
        File fil = chooser.getSelectedFile();
        if (fil != null) {
            txta.setText("");
            FileReader inputStream = new FileReader(fil.getPath());
            BufferedReader inputReader = new BufferedReader(inputStream);
            String inputString = inputReader.readLine();
            while ((inputString=inputReader.readLine())!= null){ //&& (inputString != "null\n")) {
                //inputString = inputReader.readLine();
                if (inputString != null) txta.append(inputString+"\n");
            }
                inputReader.close();
            }
        }
    catch (IOException e){
        System.out.println("error reading from disk");
    }
}

Andre gode forslag?
Avatar billede sy22 Nybegynder
22. april 2002 - 12:21 #5
Takker, nu forstår vi, i må dele point...begge svar er jo rigtige!
go' dag
Avatar billede jakoba Nybegynder
22. april 2002 - 12:21 #6
du mangler at rette linie før din while løkke. der skal KUN stå
            String inputString;
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