我目前无法从文本文件中删除前两行。我在下面使用以下代码。它在一个小文本文件上工作得很好,但它不适用于非常大的文本文件。我一直试图让它工作的文件大小超过130,000kb。
我没有收到任何错误消息,它只删除文件中的所有内容,使其完全空白。无论如何我可以让这个工作吗?
Const FOR_READING = 1
Const FOR_WRITING = 2
strFileName = "\\File\test Scp\ZRAS.txt"
iNumberOfLinesToDelete = 2
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objTS = objFS.OpenTextFile(strFileName, FOR_READING)
strContents = objTS.ReadAll
objTS.Close
arrLines = Split(strContents, vbNewLine)
Set objTS = objFS.OpenTextFile(strFileName, FOR_WRITING)
For i=0 To UBound(arrLines)
If i > (iNumberOfLinesToDelete - 1) Then
objTS.WriteLine arrLines(i)
End If
Next
MSGBOX "Done"
答案 0 :(得分:2)
不要在.ReadAll(),Split()和Array循环上浪费内存和循环。只是做:
...
Set tsIn = objFS.OpenTextFile(strFileName, FOR_READING)
Set tsOut = objFS.OpenTextFile(strFileName, FOR_WRITING)
tsIn.SkipLine ' could use a loop to skip first n lines
tsIn.SkipLine
Do Until tsIn.AtEndOfStream
tsOut.WriteLine tsIn.ReadLine()
Loop
tsIn.Close
tsOut.Close
(未经测试)