Comme les longueurs de ligne ne sont pas garantis de la même longueur, vous allez avoir besoin d'une certaine forme de delimiter ligne reconnaissable par exemple retour chariot ou saut de ligne.
Le motif de recherche binaire peut alors être à peu près votre algorithme traditionnel. Cherchez au milieu du fichier (par longueur), cherchez en arrière (octet par octet) au début de la ligne où vous arrivez, identifiée par la séquence de délimiteurs de lignes, lisez cet enregistrement et faites votre comparaison. Selon la comparaison, chercher à mi-hauteur ou en-dessous (en octets) et répéter.
Lorsque vous identifiez l'index de début d'un enregistrement, vérifiez s'il était identique à la dernière recherche. Vous pouvez constater que, lorsque vous vous connectez sur votre enregistrement cible, se déplacer à mi-chemin ne vous mènera pas à un enregistrement différent. par exemple. vous avez des enregistrements adjacents de 100 octets et 50 octets respectivement, donc sauter 75 octets vous ramène toujours au début du premier enregistrement. Si cela se produit, lisez l'enregistrement suivant avant de faire votre comparaison.
Vous devriez constater que vous atteindrez votre cible assez rapidement.
Cherchez-vous une date et une heure ou autre chose dans le fichier? –
Je cherche par date et heure. Le fait que le fichier est trié par date et heure est ce qui rend la recherche binaire possible en premier lieu. Je veux trouver la position de la ligne dans le fichier, ou la ligne elle-même – Alex