Mam program, który ma przeszukiwać katalog, znajdować pliki txt, otwierać je i znajdować podane słowo. Następnie wypisuje ścieżkę pliku w którym było podane słowo i ile razy ono wystąpiło. Zauważyłem, że program owszem znajduje te pliki i wypisuje ile razy wystąpiło podane słowo, ale problem polega na tym, że kilkadziesiąt razy zapisuje do mapy tę samą ścieżkę pliku.
import java.io.File;
import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main
{
HashMap<String, Integer> m=new HashMap<>();
public void print_results(int k)
{
for (String key:m.keySet())
{
if(m.get(key)>=k)
{
System.out.println(key + "["+m.get(key)+"]");
continue;
}
}
}
public void skanowanie(final File f)
{
for(final File tmp:f.listFiles())
{
if(tmp.isDirectory())
skanowanie(tmp) ;
else if(tmp.getName().endsWith(".txt"))
{
m.put(tmp.getAbsolutePath(), licz(tmp));
}
}
print_results(1);
}
public int licz(File f)
{
int licznik=0;
Scanner odczyt;
try
{
odczyt = new Scanner(f);
StringTokenizer t;
while(odczyt.hasNextLine())//Dopóki ma następne linie
{
t=new StringTokenizer(odczyt.nextLine()," ");//W t caly wiersz i seperator - " "
while(t.hasMoreElements())//Dopoki token ma jakieś elementy oddzielone spacja
{
if(t.nextToken().equals("int"))//jesli nastepny token jest rowny "and"
licznik++;
}
}
}
catch (FileNotFoundException e) {e.printStackTrace();}
return licznik;
}
public static void main(String[] args)
{
Main f=new Main();
final File path=new File("E:\\Steam");
f.skanowanie(path);
System.out.println("Done!");
}
}
Proszę o pomoc.