考虑我有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
答案 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(...)