«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как эффективно получить последнюю строку большого текстового файла?

Как эффективно получить последнюю строку большого текстового файла?

Опубликовано 16 ноября 2024 г.
Просматривать:863

How to Efficiently Retrieve the Last Line of a Large Text File?

Эффективное извлечение последней строки большого текстового файла

При работе с большими текстовыми файлами эффективное извлечение последней строки имеет решающее значение. Произвольный доступ к большим файлам может занять много времени, что делает его непрактичным. Вместо этого рассмотрите следующие решения:

Верните последнюю непустую строку:

Приведенная ниже функция Tail быстро извлекает последнюю непустую строку файла без загрузки или обход всего файла. Он ищет конец файла и читает символы назад, пока не встретит разрыв строки, затем создает и возвращает последнюю строку.

public String tail(File file) {
    // ...
    for (long filePointer = fileLength; filePointer != -1; filePointer--) {
        // ...
        sb.append((char) readByte);
    }
    // ...
}

Верните последние N строк:

Если вместо этого вам нужны последние N строк, используйте функцию Tail2. Он использует аналогичную технику, но подсчитывает разрывы строк, чтобы определить нужные строки, прежде чем реверсировать и создавать выходные данные.

public String tail2(File file, int lines) {
    // ...
    for (long filePointer = fileLength; filePointer != -1; filePointer--) {
        line = line   1;
        sb.append((char) readByte);
    }
    // ...
}

Вызов и использование:

File file = new File("D:\\stuff\\huge.log");
System.out.println(tail(file));
System.out.println(tail2(file, 10));

Аспекты Unicode:

Реализация использует переворот символов для восстановления строк. Хотя в целом это эффективно, это может вызвать проблемы с обращением Юникода с такими символами, как диакритические знаки и шляпы. Поэтому перед использованием этого подхода на разных языках необходимо тщательное тестирование.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3