Java - самый быстрый способ чтения текстовых файлов Char by Char - PullRequest
4 голосов
/ 02 ноября 2011

У меня около 500 текстовых файлов с 10 миллионами слов. Я должен проиндексировать эти слова. Какой самый быстрый способ чтения из текстового файла символ за символом? Вот моя первоначальная попытка:

InputStream ist = new FileInputStream(this.path+"/"+doc);
BufferedReader in = new BufferedReader(new InputStreamReader(ist));

String line;

while((line = in.readLine()) != null){


   line = line.toUpperCase(Locale.ENGLISH);
    String word = "";

    for (int j = 0; j <= line.length(); j++) {
         char  c= line.charAt(j);
     // OPERATIONS

}

Ответы [ 3 ]

1 голос
/ 02 ноября 2011

read() не даст значительной разницы в производительности.

Подробнее: Сравнение Питера Лаври read () и readLine ()

Теперь вернемся к исходному вопросу:
Входная строка: hello how are you?
Таким образом, вам нужно проиндексировать слова строки, т. Е .:

BufferedReader r = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = r.readLine()) != null) {
   String[] splitString = line.split("\\s+");
   //Do stuff with the array here, i.e. construct the index.
}

Примечание: шаблон \\s+ будет помещать разделитель в строку как любые пробелы, такие как табуляция, пробел и т. Д.

0 голосов
/ 02 ноября 2011

Не читать строки, а затем повторно сканировать строки char по char. Таким образом, вы обрабатываете каждый символ дважды. Просто прочитайте символы с помощью BufferedReader.read ().

0 голосов
/ 02 ноября 2011

Метод read () InputStreamReader может читать символ за раз.

Вы можете обернуть его вокруг FileReader или BufferedReader или примера.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...