Board logo

标题: [技术讨论] vbs中的"Adodb.Stream"[属性与方法] [打印本页]

作者: czjt1234    时间: 2012-9-25 08:51     标题: vbs中的"Adodb.Stream"[属性与方法]

本帖最后由 czjt1234 于 2012-9-28 15:21 编辑

Adodb.Stream 对象用于二进制数据流或文本流的读写和管理

带 ?? 是未理解的参数,可能是在网页代码中使用的


属性

Charset                 字符集。默认为 Unicode 。全部字符集见附录
EOS                     对象数据是否为空,返回值True|False
LineSeparator           分行符。默认值为-1,回车换行符
Mode                    读写权限。初始值为 0
Position                光标位置。初始值为 0
Size                    对象的大小
State                   对象的状态
Type                    数据类型。默认值为2,文本型



方法

Cancel                  取消执行挂起的异步 Execute 或 Open 方法的调用 ??
Close                   关闭对象
CopyTo                  从源对象光标位置,复制数据到目标对象
Flush                   把缓冲区中的内容发送到相关联的下层对象 ??
LoadFromFile            载入文件。需先打开对象
Open                    打开对象
Read                    读取二进制数据,并相应移动光标位置
ReadText                读取文本数据,并相应移动光标位置
SaveToFile              把对象的数据保存为文件
SetEOS                  设置当前光标位置为数据的结尾
SkipLine                在读取一个文本流时跳过一行,并相应移动光标位置
Write                   写入二进制数据,并相应移动光标位置
WriteText               写入文本数据,并相应移动光标位置



Adodb.Stream 对象在 vbs 里一般用于和 Msxml2.Xmlhttp 对象一起下载文件

也可用于处理文本

作者: czjt1234    时间: 2012-9-25 09:01

本帖最后由 czjt1234 于 2012-10-1 08:56 编辑

  1. Dim objAdodbStream, objAdodbStream2, strRead, binRead, intNumber
  2. Set objAdodbStream = CreateObject("Adodb.Stream")
  3. intNumber = objAdodbStream.State              '返回对象的状态
  4.   Const adStateClosed     = 0                 '对象已关闭
  5.   Const adStateOpen       = 1                 '对象已打开
  6.   Const adStateConnecting = 2                 '对象正在连接      ??
  7.   Const adStateExecuting  = 4                 '对象正在执行命令  ??
  8.   Const adStateFetching   = 8                 '正在检索对象的行  ??
  9. strRead = objAdodbStream.Charset              '返回当前字符集
  10. objAdodbStream.Charset = "CN-GB"              '设置字符集为CN-GB,也就是简体中文
  11. intNumber = objAdodbStream.LineSeparator      '返回当前分行符。默认值为 -1
  12. objAdodbStream.LineSeparator = 13|-1|10       '设置分行符
  13.   Const adCR   = 13                           '回车
  14.   Const adCRLF = -1                           '回车换行
  15.   Const adLF   = 10                           '换行
  16. intNumber = objAdodbStream.Type               '返回当前数据类型。默认为 2
  17. objAdodbStream.Type = 1|2                     '设置数据类型
  18.   Const adTypeBinary = 1                      '二进制
  19.   Const adTypeText   = 2                      '文本
  20. intNumber = objAdodbStream.Mode               '返回当前读写权限。初始值为 0
  21. objAdodbStream.Mode = 1|2|3                   '设置读写权限
  22.   Const adModeUnknown        = 0              '当前的权限未设置
  23.   Const adModeRead           = 1              '只读
  24.   Const adModeWrite          = 2              '只写
  25.   Const adModeReadWrite      = 3              '读写
  26.   Const adModeShareDenyRead  = 4              '阻止其他用户使用读权限打开  ??
  27.   Const adModeShareDenyWrite = 8              '阻止其他用户使用写权限打开  ??
  28.   Const adModeShareExclusive = 12             '阻止其他用户打开            ??
  29.   Const adModeShareDenyNone  = 16             '允许其他用户使用任何权限打开??
  30.   Const adModeRecursive      = 4194304        '用4|8|16权限设置子记录的权限??
  31. objAdodbStream.Open Source,[Mode],[Options],[UserName],[Password]  '打开对象
  32. 'Open 方法的参数用法未知
  33. 'Sourece 对象源,可不指定                         ??
  34. 'Options 指定打开的选项,可不指定,可选参数如下: ??
  35.   Const adOpenStreamAsync       = 1
  36.   Const adOpenStreamFromRecord  = 4
  37.   Const adOpenStreamUnspecified = -1
  38. 'UserName 指定用户名,可不指定                    ??
  39. 'Password 指定用户名的密码                        ??
  40. intNumber = objAdodbStream.Size               '返回对象的大小
  41. objAdodbStream.LoadFromFile "D:\test.txt"     '载入文件
  42. intNumber = objAdodbStream.Position           '返回当前光标位置,初始值为 0
  43. objAdodbStream.Position = 2                   '设置光标位置
  44. '设置光标位置。必须以读写权限打开文件 .Mode = 3
  45. objAdodbStream.SkipLine                       '在读取一个文本流时跳过一行
  46. strRead = objAdodbStream.ReadText(3)          '读取文本数据
  47. '从当前光标位置处,读取3个字节的文本数据。不指定字节数则读取全部
  48. objAdodbStream.WriteText "abc", 0|1           '写入文本数据
  49. '从当前光标位置处,覆盖写入(注意不是插入)文本数据。回车换行算2个字符
  50.   Const adWriteChar = 0                       '仅插入指定的数据。缺省值
  51.   Const adWriteLine = 1                       '插入数据后,回车换行
  52. binRead = objAdodbStream.Read(3)              '读取二进制数据
  53. '从当前光标位置处,读取3个字节的二进制数据。不指定字节数则读取全部
  54. objAdodbStream.Write binRead                  '写入二进制数据
  55. '从当前光标位置处,覆盖写入(注意不是插入)二进制数据。回车换行算2个字符
  56. objAdodbStream.SetEOS                         '设置当前光标位置为数据的结尾
  57. objAdodbStream.SaveToFile "D:\test1.txt", 1|2 '把对象的数据保存为文件
  58.   Const adSaveCreateNotExist  = 1             '不覆盖已有文件。缺省值
  59.   Const adSaveCreateOverWrite = 2             '覆盖已有文件
  60. blnYN = objAdodbStream.EOS                    '对象数据是否为空
  61. '对象数据是否为空,返回True|False。需打开对象
  62. 'Open 后为 True
  63. 'Write 后还是为 True,即使这时 Size > 0
  64. 'SaveToFile 后才为 False
  65. Set objAdodbStream2 = CreateObject("Adodb.Stream")
  66. With objAdodbStream2
  67.   .Charset = "CN-GB"
  68.   .type = 2
  69.   .mode = 3
  70.   .open
  71.   objAdodbStream.CopyTo objAdodbStream2, 3
  72.   '从objAdodbStream光标位置复制3个字节的数据到objAdodbStream2。不指定则全部复制
  73.   .SaveToFile "D:\test2.txt", 2
  74. End With
  75. objAdodbStream.Close                          '关闭对象
复制代码

作者: czjt1234    时间: 2012-9-25 09:06

本帖最后由 czjt1234 于 2012-9-26 08:14 编辑

附录
CharSet字符集(转帖,未验证)

ANSI_X3.4-1968|iso-8859-1
ANSI_X3.4-1986|iso-8859-1
arabic|iso-8859-6
ascii|iso-8859-1
ASMO-708
Big5
chinese|gb2312
CN-GB|gb2312
cp1256|windows-1256
cp367|iso-8859-1
cp819|iso-8859-1
cp852|ibm852
cp866|ibm866
csASCII|iso-8859-1
csbig5|big5
csEUCKR|ks_c_5601-1987
csEUCPkdFmtJapanese|euc-jp
csGB2312|gb2312
csISO2022JP|_iso-2022-jp$ESC
csISO2022KR|iso-2022-kr
csISO58GB231280|gb2312
csISOLatin1|windows-1252
csISOLatin2|iso-8859-2
csISOLatin4|iso-8859-4
csISOLatin5|iso-8859-9
csISOLatinArabic|iso-8859-6
csISOLatinCyrillic|iso-8859-5
csISOLatinGreek|iso-8859-7
csISOLatinHebrew|iso-8859-8
csKOI8R|koi8-r
csKSC56011987|ks_c_5601-1987
csShiftJIS|shift_jis
csUnicode11UTF7|utf-7
csWindows31J|shift_jis
cyrillic|iso-8859-5
DOS-720
DOS-862
DOS-874
ECMA-114|iso-8859-6
ECMA-118|iso-8859-7
ELOT_928|iso-8859-7
euc-jp
euc-kr
Extended_UNIX_Code_Packed_Format_for_Japanese|euc-jp
GB2312
GBK|gb2312
GB_2312-80|gb2312
greek|iso-8859-7
greek8|iso-8859-7
hebrew|iso-8859-8
hz-gb-2312
IBM367|iso-8859-1
ibm819|iso-8859-1
ibm852
ibm866
iso-2022-jp
iso-2022-kr
iso-8859-1
iso-8859-11|windows-874
iso-8859-2
iso-8859-3
iso-8859-4
iso-8859-5
iso-8859-6
iso-8859-7
iso-8859-8
ISO-8859-8 Visual|iso-8859-8
iso-8859-8-i
iso-8859-9
iso-ir-100|iso-8859-1
iso-ir-101|iso-8859-2
iso-ir-110|iso-8859-4
iso-ir-111|iso-8859-4
iso-ir-126|iso-8859-7
iso-ir-127|iso-8859-6
iso-ir-138|iso-8859-8
iso-ir-144|iso-8859-5
iso-ir-148|iso-8859-9
iso-ir-149|ks_c_5601-1987
iso-ir-58|gb2312
iso-ir-6|iso-8859-1
ISO646-US|iso-8859-1
iso8859-1|iso-8859-1
iso8859-2|iso-8859-2
ISO_646.irv:1991|iso-8859-1
iso_8859-1|iso-8859-1
iso_8859-1:1987|iso-8859-1
iso_8859-2|iso-8859-2
iso_8859-2:1987|iso-8859-2
ISO_8859-4|iso-8859-4
ISO_8859-4:1988|iso-8859-4
ISO_8859-5|iso-8859-5
ISO_8859-5:1988|iso-8859-5
ISO_8859-6|iso-8859-6
ISO_8859-6:1987|iso-8859-6
ISO_8859-7|iso-8859-7
ISO_8859-7:1987|iso-8859-7
ISO_8859-8|iso-8859-8
ISO_8859-8:1988|iso-8859-8
ISO_8859-9|iso-8859-9
ISO_8859-9:1989|iso-8859-9
koi|koi8-r
koi8-r
koi8-ru
korean|ks_c_5601-1987
KSC5601|ks_c_5601-1987
KSC_5601|ks_c_5601-1987
ks_c_5601|ks_c_5601-1987
ks_c_5601-1987
ks_c_5601-1989|ks_c_5601-1987
l1|windows-1252
l2|iso-8859-2
l4|iso-8859-4
l5|iso-8859-9
latin1|iso-8859-1
latin2|iso-8859-2
latin4|iso-8859-4
latin5|iso-8859-9
logical|windows-1255
ms_Kanji|shift_jis
shift-jis|shift_jis
shift_jis
unicode
unicode-1-1-utf-7|utf-7
unicode-1-1-utf-8|utf-8
unicode-2-0-utf-8|utf-8
unicodeFFFE
us|iso-8859-1
us-ascii|iso-8859-1
utf-7
utf-8
visual|iso-8859-8
windows-1250
windows-1251
windows-1252
windows-1253
Windows-1254|iso-8859-9
windows-1255
windows-1256
windows-1257
windows-1258
windows-874
x-ansi|windows-1252
x-cp1250|Windows-1250
x-cp1251|Windows-1251
x-euc|euc-jp
x-euc-jp|euc-jp
x-ms-cp932|shift_jis
x-sjis|shift_jis
x-unicode-2-0-utf-7|utf-7
x-unicode-2-0-utf-8|utf-8
x-user-defined
x-x-big5|big5
_autodetect
_autodetect_all
_autodetect_kr
_iso-2022-jp$ESC
_iso-2022-jp$SIO

作者: czjt1234    时间: 2012-9-25 09:08

本帖最后由 czjt1234 于 2012-9-27 08:51 编辑

一个实例,和 Msxml2.Xmlhttp 对象一起下载文件
  1. Dim objMsxml2Xmlhttp, objAdodbStream, strUrl, BinTemp
  2. Set objMsxml2Xmlhttp = CreateObject("Msxml2.Xmlhttp")
  3. Set objAdodbStream   = CreateObject("Adodb.Stream")
  4. strUrl = "http://www.baidu.com/img/baidu_sylogo1.gif"
  5. With objMsxml2Xmlhttp    '下载数据
  6.   .Open "get", strUrl, False
  7.   .Send
  8.   BinTemp = .ResponseBody
  9. End With
  10. With objAdodbStream      '保存为文件
  11.   .Type = 1
  12.   .Mode = 3
  13.   .Open
  14.   .Write BinTemp
  15.   .SaveToFile "D:\baidu_sylogo1.gif"
  16.   .Close
  17. End With
复制代码

作者: Seder    时间: 2012-9-25 13:19

http://msdn.microsoft.com/en-us/ ... 75032(v=vs.85).aspx




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2