将文本文件拆分为数组

时间:2016-04-04 22:18:14

标签: java arrays file split

我有一个这种形式的文本文件:

ID
FName
LName
City
Age
;
22333;Giannis;Georgakopoulos;Patisiwn, Athens;42
22222;Maria;Nikolakopoulou;Kabalas 33, Aigaleo;34
84567;Konstantinos;Santorinaios;Karaiskaki 44, Patisia;29 

我想阅读文本并将第一个元素(ID,FName,LName,City,Age)放到;到数组中。在此之后,我想把其余的放到另一个。 最后我想把它们放在一个数组中,形式如下:

ID    FName   LName          City             Age
22333;Giannis;Georgakopoulos;Patisiwn, Athens;42
22222;Maria;Nikolakopoulou;Kabalas 33, Aigaleo;34
84567;Kostas;Santorinaios;Karaiskaki 44, Patisia;29

我已经开始使用以下代码,但我无法完成它。

public static void main(String[] args) throws Exception {

    BufferedReader br = new BufferedReader(new FileReader(".../testing"));
    String line = null;
    String[] pinakas=new String[6];

    int i=0;
    while (!(line=br.readLine()).equals(";")) {
         pinakas[i] = line;
         i++;

        System.out.println(line);
    }
    br.close();
}

2 个答案:

答案 0 :(得分:1)

String data = null;

try {

    BufferedReader bufferedReader = new BufferedReader(new FileReader(filename));
    while ((data = bufferedReader.readLine()) != null) {
        String[] tempData = data.split("\t");
        for (int j = 0; j <= 4; j++) {
            dataFromFile[totalRecords][j] = (int) Float.parseFloat(tempData[j]);
        }
        totalRecords++;
    }
} catch (FileNotFoundException ex) {
    System.out.println("file not found");
} catch (IOException ex) {
    System.out.println("error in opening file");
}

这里我正在阅读完整的第一行并按空格分割。并将记录存储到2by2数组中。这可能对你有所帮助!

答案 1 :(得分:0)

让我试着给你一点方向。

List<Person> list = new ArrayList<Person>();
String line;
try (
    // open an input stream
    InputStream fileInputStream = new FileInputStream("".../testing"");

    // read file as UTF-8
    InputStreamReader reader = new InputStreamReader(fileInputStream, Charset.forName("UTF-8"));

    // open a BufferedReader to read line-by-line
    BufferedReader br = new BufferedReader(reader);
) {
    while ((line = br.readLine()) != null) {
        // split the `line` on ";"
        // [0] - ID    
        // [1] - FName   
        // [2] - LName          
        // [3] - City             
        // [4] - Age
        String[] objects = line.split(";");
        int ID = Integer.parseInt(objects[0]);
        String fName = objects[1];
        String lName = objects[2];
        String city = objects[3];
        int age = Integer.parseInt(objects[4]);
        list.add( new Person(ID, fName, lName, city, age) );
    }
}

System.out.println(list);

了解Person对象的外观。

class Person {
    int ID;
    String fName;
    String lName;
    String city;
    int age;

    public Person(int ID, String fName, String lName, String city, int age) {
        this.ID = ID;
        this.fName = fName;
        this.lName = lName;
        this.city = city;
        this.age = age;
    }

    @Override
    public String toString() {
        return ID + ";" + fName + ";" + lName + ";" + city ";" + age;
    }
}

打开的文件是逐行读取的。创建一个名为Person的对象,将ID,FName,LName,City和Age作为字段,这将是一个好主意。然后,您可以为文件中的每一行创建一个新的List<Person>条目。

这有帮助吗?