kobosh
kobosh

Reputation: 467

java read integers from text file

I am using eclipse ; I need to read integers from a text file that may have many lines of numbers separated by space : 71 57 99 ... I need to get these numbers as 71 and 57 ...but my code produces numbers in the range 10 to 57

    int size = 0;
    int[] spect = null;
    try {
        InputStream is = this.getClass().getResourceAsStream("/dataset.txt");
        size = is.available();
        spect = new int[size];
        for (int si = 0; si < size; si++) {
            spect[si] = (int) is.read();//   System.out.print((char)is.read() + "  ");
        }
        is.close();
    } catch (IOException e) {
        System.out.print(e.getMessage());
    }

Upvotes: 3

Views: 5501

Answers (3)

Stromata
Stromata

Reputation: 245

Have you considered using a Scanner to do this? Scanner can take the name of the file as the parameter and can easily read out each individual number.

InputStream is = this.getClass().getResourceAsStream("/dataset.txt");
int[] spect = new int[is.available()];
Scanner fileScanner = new Scanner("/dataset.txt");

for(int i = 0; fileScanner.hasNextInt(); i++){
    spect[i] = fileScanner.nextInt();
}

Upvotes: 1

brlaranjeira
brlaranjeira

Reputation: 367

You may convert it to a BufferedReader and read and split the lines.

BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
while((line = br.readLine()) != null) {
    String[] strings = line.split(" ");
    for (String str : strings) {
         Integer foo = Integer.parseInt(str);
         //do what you need with the Integer
    }
}

Upvotes: 0

Jigar Joshi
Jigar Joshi

Reputation: 240898

read() reads single byte and then you are converting into int value, you need to read line by line using BufferedReader and then split() and Integer.parseInt()

Upvotes: 2

Related Questions