У меня есть БД, которая обычно генерирует файл с 3000 строками, на самом деле я хочу посчитать количество LAYERID (s)
Файл моей БД выглядит так:
CREATE TRMD=GFT,LAYID=LY_00,USFGN=DISABLED;
CREATE BUTYP=ACB8T,RAAT=FALSE,GBPATH=AAP4,GTXT=12;
CREATE TRMD=GFT,LAYID=LY_00,USFGN=DISABLED;
CREATE TRMD=GFT,LAYID=LY_01,USFGN=DISABLED;
CREATE TRMD=GFT,LAYID=LY_01,USFGN=DISABLED;
CREATE TRMD=GFT,LAYID=LY_02,USFGN=DISABLED;
CREATE BUTYP=ACB9T,RAAT=TRUE,GBPATH=AAP4,GTXT=32;
CREATE TRMD=GFT,LAYID=LY_00,USFGN=DISABLED;
CREATE TRMD=GFT,LAYID=LY_01,USFGN=DISABLED;
CREATE TRMD=GFT,LAYID=LY_02,USFGN=DISABLED;
CREATE TRMD=GFT,LAYID=LY_03,USFGN=DISABLED;
CREATE TRMD=GFT,LAYID=LY_03,USFGN=DISABLED;
CREATE BUTYP=ACB2T,RAAT=TRUE,GBPATH=AAP4,GTXT=1;
CREATE TRMD=GFT,LAYID=LY_00,USFGN=DISABLED;
CREATE BUTYP=ACB8T,RAAT=FALSE,GBPATH=AAP4,GTXT=2;
CREATE TRMD=GFT,LAYID=LY_00,USFGN=DISABLED;
CREATE BUTYP=ACB8T,RAAT=TRUE,GBPATH=AAP4,GTXT=3;
если у нас просто есть "LAYID=LY_00
" (как в первой строке), мы должны его игнорировать, но если под "LAYID=LY_00
" должно быть "LAYID=LY_01
и ..." (как в третьей строке), мы должны считать "LAYID=LY_00
" и другие слои слоя, например, от строки 3 до строки 6 мы имеем 4 слоя
LAYID=LY_00
LAYID=LY_01
LAYID=LY_01
LAYID=LY_02
Итак, количество равно 4, и если мы хотим подсчитать их все, у нас есть 9, как я уже говорил, если у нас просто есть
LAYID = LY_00 схожая линия 1, мы ее игнорируем.
Также я написал этот метод для чтения построчно:
public void execToken(File f) throws Exception {
BufferedReader br = new BufferedReader(new FileReader(f));
String line;
while ((line = br.readLine()) != null) {
StringTokenizer strt = new StringTokenizer(line, ";");
while (strt.hasMoreTokens()) {
String token = strt.nextToken();
layerSupport(token);
}
}
}
и, я знаю, что приведенный ниже метод еще не верен и не завершен, но он может быть полезен для вас
public void layerSupport(String token){
if(token.startsWith("CREATE TRMD") && !token.contains("LAYID=LY_00"))
System.out.println(token) ;
}
большое спасибо за вашу помощь ...