大数据量文本怎么通过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)的主要内容,如果未能解决你的问题,请参考以下文章

adodb.stream的说明

用cshell怎么逐行读文件逐行进行处理

adodb.stream的介绍

随机无限线程和各种错误,同时并行逐行读/写

Python3读取大文件的方法

怎么使用ADODB.Stream,让后台能生成静态文件?