Lire le Nombre de lignes dans le Fichier Texte Volumineux VB6
J'ai des Fichier de texte de Taille 230 MO. Je veux Compter le Nombre de Lignes DU Fichier.
J'ai essayé le "Scripting.FileSystemOblect
" mais il va De mémoire.
S'Il Vous Plaît Aider.
Grâce.
UBound
a été pris en charge depuis au moins QBasicOriginalL'auteur chotai.mit | 2012-11-28
Vous devez vous connecter pour publier un commentaire.
Normale de Windows, de sauts de ligne CRLF, de sorte que vous pouvez compter l'Epa et ajouter 1 à la compter dans les cas où la dernière ligne de vos fichiers n'ont pas un après.
En vrai VB (c'est à dire VB5, VB6, etc.) vous pouvez faire usage de l'octet Chaîne orienté opérations à vitesse grand nombre de tâches. Si nous pouvons supposer que les fichiers de texte contiennent ANSI puis c'est assez rapide:
Donné un 7 000 000 de ligne fichier de 293MB il ne prend que de 0,7 secondes ici. Mais note que je n'avais pas redémarré pour s'assurer que le fichier n'est pas mis en cache lorsque j'ai couru cette épreuve. Sans la mise en cache (c'est à dire après un redémarrage), j'aurais espérer qu'il prendra aussi longtemps que 5 fois.
Pour gérer la conversion de fichiers texte Unicode est assez simple. Il suffit de remplacer le B-fonctions par le non-B équivalents, assurez-vous de définir BUFSIZE à un multiple de 2, et la recherche de
vbLf
au lieu de ANSI LF octet.Hmm, eh bien, je suppose que votre
UBound()
commencé à travailler. Vous êtes les bienvenus.1.6 GO de fichier avec 11004037 pas. de lignes dans ~20 secondes
C'est ultra-rapide. Merci beaucoup! @Bob77
OriginalL'auteur Bob77
Vous pouvez le faire par la lecture de chaque ligne dans la même variable. Il n'y a pas besoin d'enregistrer toutes les lignes:
Cela n'a pas été testé, et il a été un moment depuis que j'ai fait tout VB6, mais il devrait être proche.
C'est vrai. Un autre moyen qui pourrait être plus rapide est d'utiliser le FileSystemObject pour lire l'intégralité du fichier dans un tableau d'octets (utiliser LOF pour voir combien d'), puis de compter les occurrences de chr(13) et/ou chr(10) dans le tableau.
+1 FileSystemObject sera aussi lent, comme il lit aussi l'ensemble du fichier. Si vous vraiment vous voulez de la vitesse vous pouvez utiliser un fichier mappé en mémoire mais c'est beaucoup de travail et très avancé.
OriginalL'auteur xpda
Cela prend environ 6 secondes pour moi 480 mo fichier binaire avec 1mil+ 0xD (vbcr)
UBound est pris en charge dans chaque version de VB6, ce qui vous aide?
j'ai essayé avec 1,6 GO de fichiers et il a échoué(de Mémoire) sur ReDim buff(LOF(hF) - 1)
OriginalL'auteur Alex K.