Поиск выражения в очень длинной строке в Java

Моя строка, содержащая текстовый файл размером 50 МБ. Я получил свою строку вроде этого:

RandomAccessFile file = new RandomAccessFile("wiki.txt", "r");
FileChannel channel = file.getChannel();
MappedByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY, 0, 1024*50);
byte[] b = new byte[1024*50];
buffer.get(b);
String wiki = new String(b);

Я получаю выражение String, которое может содержать несколько слов, и мне нужно вернуть ответ, есть ли это выражение в моей строке вики (большая строка) или нет. Действие работает примерно для 1% строки (от начала строки), и когда фраза, которую я ищу, находится в середине или конце строки, ответ, который я получаю для следующего кода, будет ложным. :

System.out.println(wiki.contains(strToCheck));
System.out.println(wiki.indexOf(strToCheck, 0));
System.out.println(wiki.matches("(?i).*"+strToCheck+".*"));

Кто-нибудь знает, почему так происходит? Или что я делаю не так?

Спасибо.

0
задан KevinDTimm 14 December 2011 в 15:11
поделиться