Quelqu'un peut-il recommander un moyen rapide de trier le contenu d'un fichier texte, basé sur le premier X nombre de caractères de chaque ligne? Par exemple, si j'ai dans le fichier texte, le texte suivantUn moyen rapide de trier par ordre alphabétique le contenu d'un fichier dans Java
Adrian Graham some more text here
John Adams some more text here
Puis un autre enregistrement doit être inséré pour par exemple.
Bob Something some more text here
J'ai besoin de garder le fichier trié, mais cela est un assez grand fichier et je préfère ne pas charger entièrement en mémoire à la fois. En gros, je veux dire environ 500 000 lignes, donc peut-être pas très énorme.
J'ai fait une recherche autour et trouvé http://www.codeodor.com/index.cfm/2007/5/14/Re-Sorting-really-BIG-files---the-Java-source-code/1208 et je voulais savoir si quelqu'un pourrait suggérer d'autres manières? Pour avoir des opinions secondaires?
Mon idée initiale avant de lire l'article lié ci-dessus était:
Lire le fichier
diviser en plusieurs fichiers, par exemple A à Z
Si une ligne commence par « une » alors il est écrit dans le fichier appelé A.txt
Chacun des fichiers ont alors leur contenu trié (aucune idée claire comment pour l'instant en dehors de l'ordre alphabétique)
Puis quand il s'agit de lire des données, je sais que si je veux trouver une ligne qui commence par A puis j'ouvre A.txt Lors de l'insertion d'une nouvelle ligne, la même chose s'applique et je viens d'ajouter à la fin du fichier . Plus tard après l'insertion quand il y a le temps je peux invoquer mon programme de tri pour réorganiser les fichiers qui ont eu des choses ajoutées à eux.
Je me rends compte qu'il y a quelques défauts dans cela comme par exemple. il n'y aura pas un nombre pair de lignes qui commencent par une lettre particulière, donc certains fichiers peuvent être plus gros que d'autres etc.
Encore une fois, pourquoi ai-je besoin d'un deuxième avis pour des suggestions sur la façon d'aborder cela? Le programme actuel est en Java, mais n'importe quel langage de programmation pourrait être utilisé pour un exemple qui permettrait d'atteindre cet objectif ... Je vais porter ce dont j'ai besoin.
(Si quelqu'un se demande je ne suis pas délibérément essayer de me donner un mal de tête en stockant les informations de cette façon, j'ai hérité un petit programme douloureux qui stocke les données dans les fichiers au lieu d'utiliser une sorte de base de données) Merci à l'avance
Si vous êtes ouvert à la division de fichiers, pourquoi ne pas vous ouvrir (temporairement) au stockage dans une base de données? –
Parce que j'ai 3 jars, le programme principal, certains utilitaires et le 3ème jar qui gère le stockage et la récupération de fichiers J'ai seulement la source pour le programme principal ... à la fois le pot principal et le pot util interagissent avec le troisième jar ce qui signifie que je ne peux hériter et remplacer les différentes méthodes dont il existe un certain nombre et lectures et écritures aléatoires que j'ai trouvé dans le programme qui n'ont pas encore de sens ar rendant encore plus difficile de supprimer les fichiers et branchez un db. C'est un soft mal écrit et il est évident qu'ils n'avaient aucune intention de le retravailler ... – zcourts
En gros je ne vois pas comment ajouter simplement un db sans réécriture massive que j'essaye d'éviter. – zcourts