• 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

    • I always turn encryption off 1st boot, crazy its on by default on new computers, it should ASK you ON or OFF on 1st boot,, So many people dont even know its on , then forget their windows login and microsoft account,, RETarDED Microsoft is now, , i also find having it on slows things down too
    • Adding AI is just an excuse to hike prices. I don't want any AI features in our Slack workspace and yet will have to pay for it.
    • Hello Could you be kind too help me fix this 3.1gig and not 256gig it says 3.1gig only .someone told me to fix it with this https://www.disk-partition.com/articles/64gb-flash-drive-only-showing-32gb-5740i.html yes my sandisk ultra usb 3.0 256gb wont show up in full .  but i don't know want options i have to use on there can someone  please guide me with step by step instructions please  guide me with step by step instructions on how to repair this .sorry for asking but I've tried but i don't know want i have to do on that programme please help me i am on windows 11 home thank you nick
    • AI is as big a scam as FTX was...run by the same 'group' of people as well.
    • Slack Business+ plan jumps to $15/month as AI features launch by Paul Hill Salesforce has announced a price increase for one of its plans, which will add a few dollars per user each month to organizations' bills. The Slack Business+ plan will see prices rise from $12.50 to $15 per user per month if you pay for a whole year up front; if you pay monthly, the bill will increase from $15 to $18. Salesforce has kept the prices of its Pro plan the same and introduced a new Enterprise+ plan with custom prices for larger organizations. The new price adjustments will take effect on August 17 if you’re planning to renew, and immediately for any new customers. So, if you are renewing before August 17, you will be able to delay this price rise for around a year. The company isn’t just pulling a fast one on customers with these price rises. It’s adding AI to all paid plans, so if you use these features, the increase somewhat justifies them. We saw a similar tactic from Google Workspace back in January. New AI features and deeper Salesforce integration Slack has outlined all the new AI features coming to its Pro, Business+, and Enterprise+ plans starting from July 17. The Pro Plan will have access to conversation and thread summaries, plus huddle notes, while Business+ will have all of those plus: AI Search, Recaps, Translations, File summaries, Workflow generation, and Summarize channels workflow step. The Enterprise+ subscription has all those AI features plus Enterprise search. Additionally, it provides enhanced security, admin controls, governance, and compliance. The company also announced that all plans, including the free plan, will get access to Salesforce Channels, which lets you use Slack and Salesforce together directly within their Customer 360 Apps. Who benefits? By embedding AI right within Slack, organizations should be able to boost efficiency more easily in their daily operations. To ensure that it keeps up with the competition, the company is investing significant resources into its research and development to deliver new innovations. Affected organizations will need to try to find effective ways to use these AI tools to make the price increase worth it, whether this is speeding up tasks to free workers up for other work or something else. The move definitely doesn’t hurt Slack because it’ll make more money whether you use these AI tools or not.
  • Recent Achievements

    • Week One Done
      vivetool earned a badge
      Week One Done
    • Reacting Well
      pnajbar earned a badge
      Reacting Well
    • Week One Done
      TBithoney earned a badge
      Week One Done
    • First Post
      xuxlix earned a badge
      First Post
    • First Post
      Tomek Święcicki earned a badge
      First Post
  • Popular Contributors

    1. 1
      +primortal
      673
    2. 2
      ATLien_0
      288
    3. 3
      Michael Scrip
      223
    4. 4
      +FloatingFatMan
      195
    5. 5
      Steven P.
      144
  • Tell a friend

    Love Neowin? Tell a friend!