asp-classic – 使用ADO Stream逐行读取大文件?
发布时间:2020-12-16 03:34:37 所属栏目:asp.Net 来源:网络整理
导读:我想使用ADO Stream从UTF-8编码的本地大文本文件中读取行,所以我试试 Set objStream = CreateObject("ADODB.Stream")objStream.Charset = "utf-8"objStream.Type = 2objStream.OpenobjStream.LoadFromFile = strFileobjStream.LineSeparator = 10Do Until ob
我想使用ADO Stream从UTF-8编码的本地大文本文件中读取行,所以我试试
Set objStream = CreateObject("ADODB.Stream") objStream.Charset = "utf-8" objStream.Type = 2 objStream.Open objStream.LoadFromFile = strFile objStream.LineSeparator = 10 Do Until objStream.EOS strLine = objStream.ReadText(-2) Loop 但结果是脚本需要大量的RAM和CPU使用.那么有没有办法告诉脚本不要将所有文件内容加载到内存中,只是打开它并读取,直到它遇到任何行分隔符? 解决方法
当您使用Stream对象时,我认为很明显,.LoadFromFile使用整个文件内容填充当前流,并且没有任何cutomize选项来从文件加载parial数据.
至于读取1行,你已经使用.ReadText(-2),( – 2 = adReadLine)完成了这一步. Set objStream = CreateObject("ADODB.Stream") objStream.Charset = "utf-8" objStream.Type = 2 objStream.Open 'objStream.LoadFromFile = strFile ''I see a typo here objStream.LoadFromFile strFile objStream.LineSeparator = 10 ''that's Ok 'Do Until objStream.EOS ''no need this strLine = objStream.ReadText(-2) 'Loop objStream.Close ''add this though! [编辑]那么,对于.LineSeparator你只能使用3个常数: Constant Value Description adCRLF -1 Default. Carriage return line feed adLF 10 Line feed only adCR 13 Carriage return only 如果你需要在其他字母上打破Do..Loop,因为.ReadText是读取文本流的唯一选择,你可以将它与InStr函数一起使用,然后退出,然后找到你的自定义分隔符. Const cSeparator = "_" 'your custom separator Dim strLine,strTotal,index Do Until objStream.EOS strLine = objStream.ReadText(-2) index = InStr(1,strLine,cSeparator) If index <> 0 Then strTotal = strTotal & Left(strLine,index-1) Exit Do Else strTotal = strTotal & strLine End If Loop 不久,这是你可以做的整个优化(或者至少据我所知). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – ASP.Net MVC中的实时视频聊天录制解决方案
- ASP.NET MVC下自定义错误页和展示错误页的方式
- asp.net – ASP .NET 5 MVC 6身份3角色索赔组[已关闭]
- asp.net – 在.net 3.5 SP1中设置表单的操作会在编译时导致
- asp.net-mvc-2 – 前端控制器,页面控制器?
- 如何更正此ASP.NET错误
- asp.net – Visual Studio开发服务器使用错误的端口
- asp.net-mvc – 使用单元测试在asp.net mvc中验证重定向
- asp.net-mvc – asp.net mvc博客引擎
- asp.net-mvc – 使用@ Html.DisplayNameFor()与PagedList
推荐文章
站长推荐
- asp.net-mvc – ASP.NET MVC – IsPostBack还在吗
- asp.net-mvc – 免费.Net云主机与SQL Server数据
- ASP.NET是否需要ActiveX?
- asp.net 3.5升级到4.0 IIS6 ReturnURL问题
- asp.net-mvc-3 – 检查.NET MVC中的AngularJS $资
- asp.net – 在Global.asax方法中将与Autofac注册
- asp.net-mvc – ASP.NET MVC模型验证错误本地化上
- asp.net-mvc – 如何从ASP.NET MVC 3中的授权过滤
- asp.net – 用于Webapp和桌面/移动应用程序的Ope
- asp.net – 如何将onchange事件附加到CheckBoxLi
热点阅读