Odczyt z pliku.

0

Witam.
Napisałem sobie metodę odczytującą linia po linii dane z pliku. I wszystko jest okej. Jednak ja w pliku mam tylko dane w postaci liczb całkowitych oddzielonych spacja i enterem. Zamieniłem więc

linia = raf.readLine())!=null

na linia = raf.readInt())!=100

 ale wtedy wyświetla mi się to w jakiejś dziwnej postaci. Np. plik jest taki:

2 3 20
1 2
1 1

a dostaje coś takiego:

840971040
842009866
824193549

tu kod programu, który odczytuje po lini:

```java
import java.io.*;

public class Main {

    public void odczyt(String plik){
        File plikDoOdczytu = new File(plik);

        RandomAccessFile raf = null;
        try{
            raf = new RandomAccessFile(plikDoOdczytu, "r");
        }
        catch(FileNotFoundException e){
            System.err.print("Nie ma takiego pliku");
        }

        String linia ="" ;
        try{
            while((linia = raf.readLine())!=null){
                System.out.println(linia);
            }
            raf.close();
        }
        catch(IOException e){
            System.err.println("Błąd");
        }
    }

  public static void main (String args[]) {
      Main glowny = new Main();
      String plik="DA1";
      glowny.odczyt(plik);

  }
}

i ten zmieniony kawałek

int linia =0 ;
        try{
            while((linia = raf.readInt())!=100){
                System.out.println(linia);
            }
            raf.close();
        }
0

zrobiłem tak:

StringTokenizer st = new StringTokenizer(linia," ");
                System.out.println(st.nextToken());

ale wczytuje tylko pierwsza kolumnę :( ?

0

Poradziłem sobie w taki sposób:

public void odczyt(String plik){
            int wartosc = 0;
            FileReader fr= null;

            try{
                fr = new FileReader(plik);
            }catch(FileNotFoundException e){
                   System.out.println("BŁĄD PRZY OTWIERANIU PLIKU!");
                   System.exit(1);
            }

            StreamTokenizer st = new StreamTokenizer(fr);

            try{
               while((wartosc = st.nextToken()) != StreamTokenizer.TT_EOL ){
                    if(wartosc == StreamTokenizer.TT_NUMBER){  
                         int liczba =(int) st.nval;                      
                         System.out.println(liczba);
                     }
                 }
            }
            catch(IOException e){
                   System.out.println("BŁĄD ODCZYTU Z PLIKU!");                 
             }
            try{
                fr.close();
            }
            catch(IOException e){
                  System.out.println("BŁĄD PRZY ZAMYKANIU PLIKU!");
            }
    }

Tylko nie wiem czemu wczytują mi się wszystkie linie pliku, a mam TT_EOL czyli kiedy został osiągnięty koniec linii.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0