diky jarrro, ale uz som to vyriesil cez pole charov:
Kód:
/* vrati pocet opakovani zadaneho stringu v subore */
public int grep(String cesta, String hladaj) {
FileInputStream sr = null;
int oneChar;
try {
sr = new FileInputStream(cesta);
} catch (FileNotFoundException e) {
System.out.println("Chyba pri otvarani suboru:" + e.getMessage());
}
char []pole;
pole = new char[10000];
int i = 0;
try {
while ((oneChar = sr.read()) > 0) {
pole[i] = (char)oneChar;
i++;
}
} catch (IOException e) {System.out.println("Chyba pri citani:" + e.getMessage());}
char []poleChar = new char[100];
poleChar = hladaj.toCharArray();
int pocOpakovani = 0;
int pocSlov = 0;
int vel = hladaj.length();
for (int j=0; j<i; j++) {
if (pole[j] == poleChar[0]) {
for (int k=0; k<vel; k++) {
if (pole[j+k] == poleChar[k]) {
pocOpakovani++;
}
}
if (pocOpakovani == (vel)) {
pocSlov++;
}
pocOpakovani = 0;
}
}
return pocSlov;
}
V podstate som potom zmenil aj nacitavanie suboru nie po riadkoch ale po znakoch...Najprv som to chcel robit cez ArrayList, zeby bol kazdy riadok String v ArrayListe a kontroloval by sa kazdy riadok...zato som sa pytal na hladanie podretazca v retazci. Nakoniec som to vyriesil cez pole, nevravim ze je to efektivne, ale jedine toto riesenie vracia pocet vyskytov hladaneho retazca.