首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

如何用最快的方式得到一个txt文件的行数

2012-01-05 
怎么用最快的方式得到一个txt文件的行数?因为文件相当大,所以想用processbar显示进度,但是如果先readline

怎么用最快的方式得到一个txt文件的行数?
因为文件相当大,所以想用processbar显示进度,但是如果先readline一遍才知道行数的话未免太搞笑了点,所以问问大家有什么好办法?

[解决办法]
关注
[解决办法]
搂主寻求时间最优还是空间最优?
[解决办法]
行数是怎么定义的?换行符吗?
那就找换行符,找换行符最快的方法是什么?逐个字节读,看哪个是换行符~~
所以,你说没有快的方法?
所以说,谁比较搞笑啊?
[解决办法]
正如he_8134(只有星星伴明月)所说的,想要知道准确行数没有任何捷径可走,必须一个个字节读下来才知道,但是对于你的需求来说,好像只是为了增进读取大文件时候的用户体验,我们可以做一些work around。

解决方案1:使用Marquee型ProgressBar。
优点:简单易行
缺点:当然用户没法知道准确进度,只知道应用程序没死正在工作

解决方案2:按字节计算当前进度,而不是行数,因为我们可以轻易的获得文件的字节大小,而不是总行数。
优点:可以准确知道读取进度
缺点:code比较复杂,需要用到BackgroundWorker类

如果对BackgroundWorker用法有疑问,可以查阅MSDN或者Email我:TonyWhiteWhite@Hotmail.com

[解决办法]
dim mfile as string
mfile= "c:\test.txt "
dim buff() as byte
dim i as long
i=filelen(mfile)
redim buff(i-1)
open mfile for binary as #1
get #1,,buff
close #1
dim s as string
s=strconv(buff,vbunicode)
erase buff
dim arr() as string
arr=split(s,vbcrlf)
msgbox "文件共有行数: "+cstr(ubound(arr)+1)
[解决办法]
arr() 这个数组大极了,还不知道有没有超限制呢
[解决办法]
StreamReader sr
sr.ReadToEnd().Split( '\r\n ').Length;
[解决办法]
你可以先得到文件的字节大小,然后每次读完一行后用这个读来的字节总和和文件大小总数百分比来控件进度条伯显示比用行数要准且易于实现.
[解决办法]
因为你是在加载文件过程中显示进度条,所以用读入的字节数和总得文件字节数比是最合适的.
[解决办法]
你可以直接读出回车换行符的数量,也就是你要的行数;
另外,在读完最后一个换行符时要看看还有没有文字,如果有,就在行上+1就可以了。
[解决办法]
为什么要用行数?直接用字节大小不就行了么?
[解决办法]
涨知识了
[解决办法]
StreamReader sr
sr.ReadToEnd().Split( '\r\n ').Length;

[解决办法]
up
[解决办法]
up

[解决办法]
StreamReader sr
sr.ReadToEnd().Split( '\r\n ').Length;


全部读取再来计算行数,真是太有才了,本末倒置~~`
[解决办法]
Function pbar()
Dim fso As New FileSystemObject, fil As File, ts As TextStream

Set fil = fso.GetFile(Text1.Text)
Set ts = fil.OpenAsTextStream(ForReading)

Do While Not ts.AtEndOfStream
ts.SkipLine
Loop
pbar = ts.Line
End Function

[解决办法]
StreamReader sr
sr.ReadToEnd().Split( '\r\n ').Length;

=====================================

这个牛~~^_^


[解决办法]
难~难~难~
[解决办法]
有什么难的,流中不是有Postion吗?进度条的Max = 100;
当前的进度条的Value = Postion % 100;
[解决办法]
up

[解决办法]
StreamReader sr
sr.ReadToEnd().Split( '\r\n ').Length;

这位大哥真是太有才了
[解决办法]
TonyWhite(白白) ( ) 信誉:100 Blog 加为好友 2007-4-5 1:12:38 得分: 0



正如he_8134(只有星星伴明月)所说的,想要知道准确行数没有任何捷径可走,必须一个个字节读下来才知道,但是对于你的需求来说,好像只是为了增进读取大文件时候的用户体验,我们可以做一些work around。

解决方案1:使用Marquee型ProgressBar。
优点:简单易行
缺点:当然用户没法知道准确进度,只知道应用程序没死正在工作

解决方案2:按字节计算当前进度,而不是行数,因为我们可以轻易的获得文件的字节大小,而不是总行数。
优点:可以准确知道读取进度
缺点:code比较复杂,需要用到BackgroundWorker类

如果对BackgroundWorker用法有疑问,可以查阅MSDN或者Email我:TonyWhiteWhite@Hotmail.com
=======================================
正解。




[解决办法]
建议还是用字节来判断。用行不准确,而且,不好操作。
[解决办法]
只想到 一个一个读取 查看换行符

热点排行