Когда я правильно понял, вы хотите сохранить каждую строку между ENTITIES и ENDSEC ?
Если да, вы можете просто определить StringBuffer и добавьте все, что находится между ними, к ключевым словам.
// This could you would put outside the while loop
StringBuffer xValues = new StringBuffer();
// This would be in the while loop and you append all the lines in the buffer
xValues.append(nextline);
Если вы хотите сохранить более конкретные данные между ними к ключевым словам, то вам, вероятно, нужно работать с Регулярными выражениями идостаньте необходимые данные и поместите их в разработанную DataStructure (класс, который вы определили для себя).
И, кстати.Я думаю, вы могли бы намного проще прочитать файл с помощью следующего кода:
BufferedReader reader = new BufferedReader(new
InputStreamReader(this.getClass().getResourceAsStream(filename)));
try {
while ((line = reader.readLine()) != null) {
if(line.equals("ENTITIES") {
...
}
} (IOException e) {
System.out.println("IO Exception. Couldn't Read the file!");
}
Тогда вам не нужно сначала читать, сколько строк в файле.Вы только начинаете читать до конца :).
РЕДАКТИРОВАТЬ:
Я до сих пор не знаю, правильно ли я понимаю.Так что если ENTITIES POINT 10 1333.888 20 333.5555 ENDSEC - это одна строка, то вы можете работать с split ("") методом.
Позвольте мне объяснить на примере:
String line = "";
String[] parts = line.split(" ");
float xValue = parts[2]; // would store 10
float yValue = parts[3]; // would store 1333.888
float zValue = parts[4]; // would store 20
float ... = parts[5]; // would store 333.5555
EDIT2:
Или каждая точка (x, y, ..) на другой строке?!
Итак, содержимое файлаэто выглядит так:
ENTITIES POINT
10
1333.888 // <-- you want this one as xValue
20
333.5555 // <-- and this one as yvalue?
ENDSEC
BufferedReader reader = new BufferedReader(new
InputStreamReader(this.getClass().getResourceAsStream(filename)));
try {
while ((line = reader.readLine()) != null) {
if(line.equals("ENTITIES") {
// read next line
line = reader.readLine();
if(line.equals("10") {
// read next line to get the value
line = reader.readLine(); // read next line to get the value
float xValue = Float.parseFloat(line);
}
line = reader.readLine();
if(line.equals("20") {
// read next line to get the value
line = reader.readLine();
float yValue = Float.parseFloaT(line);
}
}
} (IOException e) {
System.out.println("IO Exception. Couldn't Read the file!");
}
Если у вас есть несколько ENTITIES в файле, вам нужно создать класс, в котором будут храниться xValue, yValue, или вы можете использовать класс Point .Затем вы должны создать ArrayList из этих точек и просто добавить их ..