如何在Java中导入ASCII文件?

时间:2016-01-05 00:01:23

标签: java ascii

我有代码:

package package;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;

public class Test {

    private List<Integer> liczby = new ArrayList<Integer>();

    public void dodajLiczbe(int liczba) {
        liczby.add(liczba);
    }

    public int wezLiczbe(int indeks) {
        return liczby.get(indeks);
    }

    public int ileLiczb() {
        return liczby.size();
    }

    public static void main(String[] args) {
        Test w = new Test();

        String nazwaPliku = "file.xyz";

        try {
            BufferedReader br = new BufferedReader(new FileReader(nazwaPliku));
            String linia = null;
            while ((linia = br.readLine()) != null) {
                int liczba = Integer.parseInt(linia.trim());
                w.dodajLiczbe(liczba);
            }
        } catch (Exception e) {
            System.err.println("Wystapil blad przy wczytywaniu danych");
            e.printStackTrace();
        }
        System.out.println("Wczytanych liczb: " + w.ileLiczb());
    }

}

我试图导入我的ASCII文件,它有150k行,我在编译中有错误(第一行):

java.lang.NumberFormatException: For input string: "0.000 210 62"
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at package.Test.main(Test.java:33)

第一栏必须是&#34;。&#34;。如果你有更好的选择,请告诉我这个。 file.xyz中的第一行:

0.000 210 62
0.000 217 79
0.000 224 91
0.000 231 99
0.000 238 109

1 个答案:

答案 0 :(得分:5)

您正在呼叫linia.trim(),但第一行不是有效数字,因为它包含空格。在将String转换为Integers之前,您需要首先将String[] parts = linia.trim().split(" "); Integer firstNumber = Integer.parseInt(parts[0]); 的输出解析为{{1}}。

{{1}}

@Pshemo建议的更好的方法是使用Scanner类。