Я создал утилиту поиска апплета, в которой я предоставляю строку в качестве входных данных и нахожу эту строку в указанном файле или папке.Я сделал с этим, но я не доволен его работой.Процесс занимает слишком много времени, чтобы ответить.Я решил выполнить его профилирование, чтобы увидеть, что происходит, и заметил, что метод scanner.hasNextLine () занимает большую часть времени.Хотя это очень важный метод для моей программы, потому что я должен прочитать все строки и найти эту строку, есть ли другой способ улучшить его производительность и сократить время выполнения
Вот код, где я использую этот метод ....
fw = new FileWriter("filePath", true);
bw = new BufferedWriter(fw);
for (File file : filenames) {
if(file.isHidden())
continue;
if (!file.isDirectory()) {
Scanner scanner = new Scanner(file);
int cnt = 0;
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
if(!exactMatch)
{
if(!caseSensitive)
{
if (line.toLowerCase().contains(searchString.toLowerCase())) {
// System.out.println(line);
cnt += StringUtils.countMatches(line.toLowerCase(),
searchString.toLowerCase());
}
}
else
{
if (line.contains(searchString)) {
// System.out.println(line);
cnt += StringUtils.countMatches(line,
searchString);
}
}
}
И да, метод toLowerCase () также занимает больше времени, чем ожидалось.
Я изменил свой код, и теперь я использую BufferedReader
вместо Scanner
, как Alex и Nrj , и я обнаружил хорошее улучшение производительности моегоприложение.Сейчас он обрабатывает в третий раз свою более раннюю версию.Спасибо всем, что ответили .....