2017-08-19 1 views
1

Nous avons deux types de fichiersComment trouver les différences dans les gros fichiers texte?

  1. seul fichier qui aura des enregistrements ayant un code de réservation - Cette taille du fichier est d'environ 20 Mo

    AMMA-08/17/2017 12:02: 06-EZZE20170819010101

    AMMA-08/17/2017 12: 02: 06-EZZE20170819020202

  2. Ensemble de plusieurs fichiers qui ont des dossiers comme ci-dessous - Ce fichier aura autour de dossiers 20K-30K

    000003 | EZZE20170819010101 | 16082017 | Bonjour michael

    000003 | EZZE20170819070707 | 16082017 | Bonjour Jackson

Je dois énumérer les enregistrements sans correspondance dans les fichiers séparés (EZZE20170819020202 et EZZE20170819070707).

Les fichiers ont une taille énorme et je dois diviser chaque enregistrement pour obtenir le CODE qui sera apparié avec le CODE dans un autre fichier, je suis préoccupé par les performances et l'utilisation du processeur.

Existe-t-il une stratégie ou une bibliothèque existante (Java ou toute autre technologie) offrant des fonctionnalités similaires?

+4

20 MB = énorme? Quel système d'exploitation, combien de RAM et quel processeur avez-vous que vous vous inquiétez à ce sujet? Vous venez d'essayer de simplement l'appliquer directement? –

+1

Askig for libraries est hors sujet. –

+1

avez-vous essayé regex? – techprat

Répondre

0

Il ne devrait pas y avoir de problème de mémoire si vous utilisez un tampon de taille décente (j'utiliserais au moins 1-20 Mo pour m'assurer que le HD fait la plupart du temps la lecture et l'écriture séquentielles).

Si vous avez plus de 2 fichiers en même temps, vous devez utiliser des threads pour réduire le temps.

Si la vitesse est un problème, vous pouvez également consulter les paquets java.nio - il sera plus rapide que la bibliothèque java.io. Vous pouvez consulter le site https://dzone.com/articles/java-sequential-io-performance

+0

Pourquoi ne pas laisser le pilote du système de fichiers OS mettre le fichier en tampon? Le site auquel vous vous êtes connecté indique clairement qu'une classe mise en mémoire tampon n'a pas beaucoup d'avantages en termes de performances. Sur le fichier de 400 Mo, la performance est encore pire. –

+0

@ dr-geek: Merci, c'est fait. ajouté mon commentaire dans la réponse ci-dessus. –