首页 > 解决方案 > ForWriting 和 ForAppending VBS 的区别

问题描述

我有以下代码生成一个数组并将其写入文本文件。

当我使用 ForAppending 模式打开文件时,它会在 60 秒内写入。

当我使用 ForWriting 模式时,它的写入速度很慢。

谁能解释一下为什么 ForAppending 模式比 ForWriting 快得多?

谢谢你。

Dim objFSO, objTextFile
Dim strFile
strFile = "U:\Summers.txt"

Set objFSO =     CreateObject("Scripting.FileSystemObject")

' ForAppending = 8 ForReading = 1,     ForWriting = 2

Const ForAppending = 8

Set objTextFile = objFSO.OpenTextFile _
(strFile, ForAppending, True)


imax = 10000000


a = array()
t0 = timer 'Standard array
Redim a(imax)

For i = 0 To imax

 a(i) = strline

Next

msgbox "Array ready."

for i = 0 to ubound(a)

objTextFile.WriteLine(a(i) & vbCrLf)
next

objTextFile.Close

s = s & "[Array " &     FormatNumber(timer - t0, 3, -1) & "]" & vbCRLF



Set a = Nothing

MsgBox s

标签: vbscript

解决方案


ForWriting 覆盖现有文件,而 ForAppending 只是将内容添加到末尾。如果您在每次运行之前手动删除文件,那么时间差会很奇怪。我想知道是否在每次 WriteLine 调用时都会发生覆盖,这里的文档不是很具体。

但是,由于许多 WriteLine 调用,两者都有相当大的开销。您可以连接 RAM 中的字符串,并且只执行一次 Write() 即可获得性能。甚至使用 ADODB.Stream 对象。这对于 Unicode 文件也更可靠。


推荐阅读