Java从文件中读取多个对象

时间:2016-04-03 19:29:32

标签: java io text-files

考虑我有2个不同的班级

public class A {

    String name;
    int A1;
    int A2;

}

,另一个类是:

public class B {

    String B0;
    int B1;
    int B2;
}

现在我有一个包含整数的文件,以及A的几个对象和B的几个

该文件可能就像

3
"Jim"; 1;2
"jef";3;5
"Peter";6;7
"aa";1;1
"bb";2;3
"cc";3;4

您可以认为 3 (在文件的开头)是A类中的对象数,其余是B类中的对象。

问题是,如何从文件中读取和分离所有对象?

主要问题是我不知道如何从文件中读取第一个int。我做的是

     InputStream inputFileStream = Main.class.getResourceAsStream("/inputFile.txt");
ObjectInputStream ois = new ObjectInputStream(inputStream);      
int i = ois.readInt();
     ois.close();

但它给了我一个错误:

Exception in thread "main" java.io.StreamCorruptedException: invalid stream header: 350A4261

1 个答案:

答案 0 :(得分:0)

  

主要问题是我不知道如何从文件中读取第一个int。

您正在阅读文本文件,而不是数据文件,因此请勿使用readInt()。使用BufferedReader或我的建议 - 扫描程序对象。

InputStream inputFileStream = Main.class.getResourceAsStream("/inputFile.txt");
Scanner scanner = new Scanner(inputFileStream);
int int = scanner.nextInt(); // get that first int
scanner.nextLine();   // go to the next line (swallow the end-of-line token)
//.....

然后使用相同的扫描仪读取线条。使用

while (scanner.hasNextLine) {
    String line = scanner.nextLine();
    // here process the line into an A or B depending on the results of a counter variable
    // then increment the counter here
}

请注意,您的处理可能会使用String的split(...)方法在;上拆分,并使用您需要的项创建一个String数组。然后,您需要通过Integer.parseInt(...)

解析与int相关的项目