• 0

[vb.net] count number of lines in a textfile


Question

  Visual Basic .NET said:
Dim line(1000), txt As String

Dim x As Integer = 0

Dim file As System.IO.StreamReader

file = New System.IO.StreamReader(OpenFileDialog1.FileName)

Do

? ? txt = file.ReadLine()

? ? line(x) = txt

? ? x += 1

Loop Until txt Is Nothing

currently i'm using this to read a text file and put each line of text in an array of strings (i need to parse the strings later). this works great, but i have to declare line() with an index, or redim it later with an index of the number of lines the file contains. this code works for files up to 1001 lines long (arrays start at 0) but files larger than that cause an error. my problem lies in that i can't find the number of lines without doing something like this first:

  Visual Basic .NET said:
Do

? ? txt = file.ReadLine()

? ? x += 1

Loop Until txt Is Nothing

ReDim line(x)

x = 0 'set x to zero for start of next loop

this would work, but i would be reading the file twice, which takes time. sure, most text files aren't so big that you would notice a pause, but i want to do:pt right :p how would i get the number of lines in a text file? searching on MSDN doesn't bring up much about this with the streamreader class, so i don't know what to do...

7 answers to this question

Recommended Posts

  • 0

You don't need to load the whole file all at once into memory.

Just check for number of VbCr (ascii 13) charaters in the text file.

This will give you the number of lines in the file.

If the last character of the file is not VbCr or VbLf (ascii 10) then add 1 to the total count.

  • 0
  gameguy said:
noll: i'll look into arraylists, i haven't heard of those...

Yes, check out all the Collections classes. I can't remember the last time I used a normal array for much of anything. I was fortunate enough to have a professor for Java who taught us these and made us rewrite many parts of the Java Collections Framework (which mostly works the same in .NET) so I've used them extensively knowing how they work.

  • 0

i need it line by line, otherwise i'd do that.

using this code, i get an error saying "index was out of range. must be non-negative number and less than the size of the collection."

  Quote
Dim line As New ArrayList()

Dim txt As String

Dim x As Integer = 0

Dim file As System.IO.StreamReader

file = New System.IO.StreamReader(OpenFileDialog1.FileName)

Do

? ? txt = file.ReadLine()

? ? line(x) = txt 'code crashes on this line

? ? x += 1

Loop Until txt Is Nothing

:blink:blink: the index IS a non-negative number less than the size of the collection (default capacity for an ArrayList is 16, right?) x is zero, which satisfies both conditions, so what's the pro:huh: :huh: it's happening the first time it loops, when x is zero. and it should grow when it needs to anyway, r:unsure:nsure:

  • 0

nevermind, i fixed it. i had to use line.Insert(x, txt) instead of treating it as an array.

fixed code:

  Quote
Do

? ? txt = file.ReadLine()

? ? line.Insert(x, txt) 'Insert(index As Integer, value As Object)

? ? x += 1

Loop Until txt Is Nothing

Edited by gameguy
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Google Chrome 137.0.7151.120 (offline installer) by Razvan Serea The web browser is arguably the most important piece of software on your computer. You spend much of your time online inside a browser: when you search, chat, email, shop, bank, read the news, and watch videos online, you often do all this using a browser. Google Chrome is a browser that combines a minimal design with sophisticated technology to make the web faster, safer, and easier. Use one box for everything--type in the address bar and get suggestions for both search and Web pages. Thumbnails of your top sites let you access your favorite pages instantly with lightning speed from any new tab. Desktop shortcuts allow you to launch your favorite Web apps straight from your desktop. Chrome has many useful features built in, including automatic full-page translation and access to thousands of apps, extensions, and themes from the Chrome Web Store. Google Chrome is one of the best solutions for Internet browsing giving you high level of security, speed and great features. Important to know! The offline installer links do not include the automatic update feature. Google Chrome 137.0.7151.120 changelog: [$7000][420697404] High CVE-2025-6191: Integer overflow in V8. Reported by Shaheen Fazim on 2025-05-27 [$4000][421471016] High CVE-2025-6192: Use after free in Profiler. Reported by Chaoyuan Peng (@ret2happy) on 2025-05-31 [425443272] Various fixes from internal audits, fuzzing and other initiatives Download web installer: Google Chrome Web 32-bit | Google Chrome 64-bit | Freeware Download: Google Chrome Offline Installer 64-bit | 128.0 MB Download: Google Chrome Offline Installer 32-bit | 115.0 MB Download page: Google Chrome Portable Download: Google Chrome MSI Installers for Windows (automatic update) View: Chrome Website | Release Notes Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • -Drop the art style, it's cool but doesn't fit the franchise at all. -Make it a gritty single player game, like Halo -Include deathmatch and all that stuff, extraction can be a separate mode If they don't do that, it's dead on arrival IMO.
    • It's a shame because it's one of the best immersive sims ever made, even though it could have used a bit more monster variety IMO.
    • He said "for some projects". There's no way that 30% of Windows' code is written by AI.
  • Recent Achievements

    • Week One Done
      topantidetectbrowser earned a badge
      Week One Done
    • Explorer
      Jdoe25 went up a rank
      Explorer
    • First Post
      Ian_ earned a badge
      First Post
    • Explorer
      JaviAl went up a rank
      Explorer
    • Reacting Well
      Cole Multipass earned a badge
      Reacting Well
  • Popular Contributors

    1. 1
      +primortal
      671
    2. 2
      ATLien_0
      281
    3. 3
      Michael Scrip
      223
    4. 4
      +FloatingFatMan
      190
    5. 5
      Steven P.
      146
  • Tell a friend

    Love Neowin? Tell a friend!