大数据量文本怎么通过adodb.stream逐行读取(VBS)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据量文本怎么通过adodb.stream逐行读取(VBS)相关的知识,希望对你有一定的参考价值。
大文本,一次性读取会报内存不够错误,不想用scripting.filesystemobject读取(遇到中文会乱码)
使用方法:Object.Cancel说明:取消执行挂起的异步 Execute 或 Open 方法的调用。
Close 方法
使用方法:Object.Close
说明:关闭对象
CopyTo 方法
使用方法: Object.CopyTo(destStream,[CharNumber])
说明:将对象中的数据复制,destStream指要复制的对像,CharNumber为可选参数,指要复制的字节数,不选为全部复制。
Flush 方法
使用方法:Object.Flush
说明:将缓存中的数据强制输出
LoadFromFile 方法
使用方法: Object.LoadFromFile(FileName)
说明:将FileName指定的文件装入对象中,参数FileName为指定的文件名。
Open 方法
使用方法:Object.Open([Source],[Modem],[Options],[UserName],[Password])
说明:打开对象 参数说明:Sourece 对像源,可不指定 Mode 指定打开模式,可不指定,可选参数如下: adModeRead=1
adModeReadWrite=3 adModeRecursive=4194304 adModeShareDenyNone=16
adModeShareDenyRead=4 adModeShareDenyWrite=8 adModeShareExclusive =12
adModeUnknown=0 adModeWrite=2 Options 指定打开的选项,可不指定,可选参数如下:
adOpenStreamAsync=1 adOpenStreamFromRecord=4 adOpenStreamUnspecified=-1
UserName 指定用户名,可不指定。 Password 指定用户名的密码
Read 方法
使用方法:Object.Read(Numbytes)
说明:读取指定长度的二进制内容。参数说明:Numbytes指定的要读取的字节数,不指定则读取全部。
ReadText 方法
使用方法:Object.ReadText(NumChars)
说明:读取指定长度的文本参数说明:NumChars指定的要读取的字符数,不指定则读取全部。
SaveToFile 方法
使用方法:Object.SaveToFile(FileName,[Options])
说明:将对像的内容写到FileName指定的文件中参数说明:FileName指定的文件 Options 存取的选项,可不指定,可选参数如下: adSaveCreateNotExist=1 adSaveCreateOverWrite=2
SetEOS 方法
使用方法:Object.setEOS()
说明:将数据流设置为空 SkipLine 方法 使用方法:Object.SkipLine(n) 说明:跳过n行 Write
方法使用方法:Object.Write(Buffer) 说明:将指定的数据装入对像中。 参数说明:Buffer 为指定的要写入的内容。
WriteText 方法
使用方法:Object.WriteText(Data,[Options])
说明:将指定的文本数据装入对像中。参数说明:Data 为指定的要写入的内容。 Options 写入的选项,可不指定,可选参数如下:
adWriteChar=0 adWriteLine=1有下列属性: Charset:字符集 EOS 返回对像内数据是否为空。
LineSeparator 指定换行格式,可选参数有 adCR=13 adCRLF=-1 adLF=10 Mode 指定或返回模式。
Position 指定或返加对像内数据的当前指针。 Size 返回对像内数据的大小。 State 返加对像状态是否打开。 Type
指定或返回的数据类型,
可选参数为: adTypeBinary=1 adTypeText=2
示例如下:
<%
Dim objet_Stream
Dim Select_Fichier
Dim adTypeText
adTypeText = 2
Select_Fichier = "c:autoexec.bat"
set objet_Stream = Server.CreateObject("ADODB.Stream")
objet_Stream.Open
objet_Stream.LoadFromFile Select_Fichier
objet_Stream.Type = adTypeText
Objet_Stream.Charset = "ISO-8859-1"
Taille_Fichier = objet_Stream.Size
Affiche_Contenu= objet_Stream.ReadText
Response.Write "Fichier : " & Select_Fichier & ""
Response.Write "Taille : " & Taille_Fichier & " Octets"
Response.Write "Contenu : " & Affiche_Contenu
objet_Stream.Close
set objet_Stream = nothing
%>
你可以学习一下:大数据:http://edu.51cto.com/training/training_id-15.html 参考技术A 这是我以前编的,代码如下:
' On Error Resume Next
' 建立变量
Dim wsh,fso,str,stm,stm1,enCodeini,enCodeLast
enCodeini="utf-8"
enCodeLast="gb2312"
enCodeiniRep="charset="&enCodeini
enCodeLastRep="charset="&enCodeLast
' 初始化全局对象
Set fso = CreateObject("scripting.filesystemobject")
Set wsh = CreateObject("wscript.shell")
' 直接运行脚本则提醒*******************************************
If WScript.Arguments.Count=0 Then
Wsh.RegWrite "HKCR\Folder\shell\enCodeTo\", "【Utf-8 转 GB2312】", "REG_SZ"
Wsh.RegWrite "HKCR\Folder\shell\enCodeTo\command\", "wscript.exe "&Chr(34)&WScript.ScriptFullName&Chr(34)&Chr(32)&chr(34)&"%1"&chr(34), "REG_SZ"
wsh.Popup "【Utf-8 转 GB2312】",9,"请不要直接运行脚本",64
WScript.Quit
End If
' 定义循环获取子文件夹函数
getSubFD WScript.Arguments.Item(0)
'*******************************************
SUB getSubFD(FolderArg)
Set folders = fso.GetFolder(FolderArg)
For Each fileName In folders.Files
Set stm = CreateObject("Adodb.Stream")
stm.Type = 2
stm.mode = 3
stm.charset = enCodeini
stm.Open
stm.loadfromfile fileName.Path
Str = stm.ReadText
stm.Close
Set stm = Nothing
Set stm1 = CreateObject("Adodb.Stream")
stm1.Type = 2
stm1.mode = 3
stm1.charset =enCodeLast
stm1.Open
str = Replace(str,enCodeiniRep,enCodeLastRep)
stm1.WriteText str
stm1.SaveToFile fileName.Path, 2
stm1.flush
stm1.Close
Next
Set subfolders = folders.SubFolders
For Each subfolder In subfolders
getSubFD(subfolder)
Next
End Sub
Dim tt
Set tt=createobject("sapi.spvoice")
tt.speak("1")
tt.speak("2")
tt.speak("3")
tt.speak("4")
tt.speak("5")
tt.speak("6")
tt.speak("7")
tt.speak("8")
tt.speak("9")
tt.speak("10")
tt.speak("11")
tt.speak("12")
tt.speak("13")
tt.speak("14")
tt.speak("15")
MsgBox "完成"
ADODB.Stream文本流的ReadText方法怎么按行读
private void Form1_Load(object sender, EventArgs e)int j=0;
label1.Text= FileRowText(@"c:\update.dat",2, ref j);
#region 获取文本某行数据
///
/// 获取文本文件某行数据
///
/// 文本文件路径
/// 第几行
/// 返回总行数
///
private string FileRowText(string filePath,int i, ref int j)
StreamReader sr = File.OpenText(filePath);
string str = "";
string text = "";
int num = 0;
while ((str = sr.ReadLine()) != null)
num++;
if (num == i)
text = str;
j = num;
sr.Close();
return text;
#endregion 参考技术A Khalifa Internat
以上是关于大数据量文本怎么通过adodb.stream逐行读取(VBS)的主要内容,如果未能解决你的问题,请参考以下文章