找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 5098|回复: 1

VB读写UTF-8文本文件(应该是任意存在的编码都可行吧)

[复制链接]

3

主题

9

回帖

0

精华

铜牌会员

积分
248
发表于 2008-7-16 12:01:02 | 显示全部楼层 |阅读模式
<p>使用ADO中的Stream对象对任意编码格式的文本文件的读写操作</p>
<p>封装成了类。。</p>
<p>没技术可言。。。 纯方便。。</p>
<p>&nbsp;</p>
<p><font face="Verdana">'--------------------<br/>'类模块:FSO<br/>'SielnceNet@qq.Com<br/>'时间:2008-7-4 15:57:53<br/>'说明:打开/保存任意编码格式的文本文件<br/>'--------------------</font></p>
<p><font face="Verdana">Option Explicit<br/>Private FileBody As String '文件内容<br/>Private ErrInfo As String<br/>Private Coding As String</font></p>
<p><font face="Verdana">'Dim ADO_Stream As Stream&nbsp;&nbsp; '使用此项需引用ADO对象<br/>Dim ADO_Stream As Object</font></p>
<p><font face="Verdana">'文件打开成功后使用此方法获取文件内容<br/>Public Function GetFileText() As String<br/>&nbsp;&nbsp;&nbsp; GetFileText = FileBody<br/>End Function</font></p>
<p><font face="Verdana">'操作失败时。。使用此方法获取错误信息<br/>Public Function GetErrorInfo() As String<br/>&nbsp;&nbsp;&nbsp; GetErrorInfo = ErrInfo<br/>End Function</font></p>
<p><font face="Verdana">'打开文件<br/>Public Function OpenFile(FileName As String) As Boolean<br/>'FileName:需要打开的文件名</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; If ADO_Stream Is Nothing Then Exit Function</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; Err.Number = 0<br/>&nbsp;&nbsp;&nbsp; On Error GoTo ferr</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; With ADO_Stream<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Type = 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Mode = 3<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Open<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .LoadFromFile FileName<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Position = 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Type = 2<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Charset = IIf(Coding = "", "gb2312", Coding)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileBody = .ReadText<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Close<br/>&nbsp;&nbsp;&nbsp; End With<br/>&nbsp;&nbsp;&nbsp; OpenFile = True<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; Exit Function<br/>ferr:<br/>&nbsp;&nbsp;&nbsp; ErrInfo = FileName &amp; "打开失败!错误信息:" &amp; Err.Description<br/>&nbsp;&nbsp;&nbsp; Debug.Print ErrInfo<br/>&nbsp;&nbsp;&nbsp; Err.Number = 0<br/>End Function</font></p>
<p><font face="Verdana">'保存文件<br/>Public Function SaveFile(FileName As String, strFileBody As String) As Boolean<br/>'FileName:文件保存路径名字<br/>'strFileBody:需要保存的文件内容</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; If ADO_Stream Is Nothing Then Exit Function<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; Err.Number = 0<br/>&nbsp;&nbsp;&nbsp; On Error GoTo ferr</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; With ADO_Stream<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Type = 2<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Mode = 3<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Charset = IIf(Coding = "", "gb2312", Coding)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Open<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .WriteText strFileBody<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .SaveToFile FileName, 2<br/>&nbsp;&nbsp;&nbsp; End With<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; SaveFile = True<br/>&nbsp;&nbsp;&nbsp; Exit Function<br/>ferr:<br/>&nbsp;&nbsp;&nbsp; ErrInfo = FileName &amp; "保存失败!错误信息:" &amp; Err.Description<br/>&nbsp;&nbsp;&nbsp; Debug.Print ErrInfo<br/>&nbsp;&nbsp;&nbsp; Err.Number = 0<br/>End Function</font></p>
<p><font face="Verdana">Private Sub Class_Initialize()<br/>&nbsp;&nbsp;&nbsp; Err.Number = 0<br/>&nbsp;&nbsp;&nbsp; On Error GoTo ferr<br/>&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp; 'Set ADO_Stream = New Stream&nbsp;&nbsp; '使用此项需引用ADO对象<br/>&nbsp;&nbsp;&nbsp; Set ADO_Stream = CreateObject("ADODB.Stream")</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; Exit Sub<br/>&nbsp;&nbsp;&nbsp; <br/>ferr:<br/>&nbsp;&nbsp;&nbsp; Set ADO_Stream = Nothing<br/>&nbsp;&nbsp;&nbsp; ErrInfo = "ADODB.Stream对象创建失败!"<br/>&nbsp;&nbsp;&nbsp; Debug.Print ErrInfo<br/>&nbsp;&nbsp;&nbsp; Err.Number = 0<br/>End Sub</font></p>
<p><font face="Verdana">'设置文件编码<br/>'缺省编码为gb2312<br/>Public Property Let SetCoding(ByVal vNewValue As String)<br/>&nbsp;&nbsp;&nbsp; Coding = vNewValue<br/>End Property<br/></font></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p> MlNrm35Q.rar (2.76 KB, 下载次数: 14013) <br/>

275

主题

3019

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17066

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2008-7-16 18:09:57 | 显示全部楼层
HOHO,不错~~
我就是嗷嗷叫的老马了......

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表