Может ли кто-нибудь порекомендовать быстрый способ сортировки содержимого текстового файла по первому количеству символов X в каждой строке?Например, если у меня в текстовом файле есть следующий текст
Adrian Graham some more text here
John Adams some more text here
Затем необходимо вставить еще одну запись, например:
Bob Something some more text here
Мне нужно сохранить файл отсортированным, но этодовольно большой файл, и я бы не стал загружать его сразу в память.В целом, я имею в виду около 500 000 строк, так что, возможно, не очень большое.
Я провел поиск и нашел http://www.codeodor.com/index.cfm/2007/5/14/Re-Sorting-really-BIG-files---the-Java-source-code/1208, и я хотел знать, может ли кто-нибудь предложить какие-либо другие способы?Ради второго мнения?
Моя первоначальная идея, прежде чем я прочитал вышеупомянутую связанную статью, была:
Прочитать файл
Разделить его на несколько файлов, например, Aв Z
Если строка начинается с «a», то она записывается в файл с именем A.txt
. Затем каждый из файлов отсортирован по своему содержанию (нет четкого представления о том, насколько просто он разделенв алфавитном порядке)
Затем, когда дело доходит до чтения данных, я знаю, что если я хочу найти строку, начинающуюся с A, тогда я открываю A.txt При вставке новой строки применяется то же самое, и я простодобавить в конец файла.Позже, после вставки, когда есть время, я могу вызвать мою программу сортировки, чтобы изменить порядок файлов, к которым были добавлены файлы.
Я понимаю, что в этом есть несколько недостатков, например, например.не будет четного числа строк, начинающихся с определенной буквы, поэтому некоторые файлы могут быть больше, чем другие и т. д.
Что опять же, почему мне нужно второе мнение для предложений о том, как подойти к этому?Текущая программа написана на Java, но для примера можно было бы использовать любой язык программирования ... Я перенесу то, что мне нужно.
(Если кому-то интересно, что я намеренно не пытаюсь создать себе головную боль, храня информацию таким образом, я унаследовал небольшую болезненную программу, которая хранит данные в файлах вместо использования какой-либо базы данных) Заранее спасибо