一般分三步。读文件到动态数组(一行对应一个元素)、修改数组指定元素(行)、将数组保存到文件FileLineSet为主函数,它可以将pFileName指定的文件的第pLine行修改为pString。(下列程序没有经过测试,仅仅表达一个意思。可能有错误。)Function FileLineSet(pFileName As String,pLine As Long,pString As String)
Dim tAry() As String
ReDim tAry(0)
AryGetByFile pFileName,pAry()
AryLineSet pAry(),pLine,pString
AryPutToFile pFileName,pAry()
End Function1、读文件到动态数组(一行对应一个元素)
Function AryGetByFile(pFileName As String,pArray() As String)Dim tLoadStr As String
Dim tFileNumber As Integer
Dim tStart As LongtStart=0tFileNumber=FreeFileOpen pFileName For Input As #tFileNumber
Do
ReDim Preserve pArray(tStart)
Line Input #tFileNumber,tLoadStr
pArray(tStart)=tLoadStr
tStart=tStart+1
Loop Until EOF(tFileNumber)Close #tFileNumber
2、修改数组指定元素(行)Function AryLineSet(pAry() As String,pN As Long,pStr As String)
Dim tAryLen As Long
If pN<=tAryLen Then
pArray(pN)=pStr
End If
End Function3、将数组保存到文件Function AryPutToFile(pFileName As String,pAry() As String)
Dim tFileNumber As Integer
Dim tLoopEnd As Long
tFileNumber=FreeFile
tLoopEnd=UBound(pAry)
Open pFileName For OutPut As #tFileNumber
For tLoop=0 To tLoopEnd
Print #tFileNumber,pAry(tLoop)
Next
Close #tFileNumber
End Function
Dim tAry() As String
ReDim tAry(0)
AryGetByFile pFileName,pAry()
AryLineSet pAry(),pLine,pString
AryPutToFile pFileName,pAry()
End Function1、读文件到动态数组(一行对应一个元素)
Function AryGetByFile(pFileName As String,pArray() As String)Dim tLoadStr As String
Dim tFileNumber As Integer
Dim tStart As LongtStart=0tFileNumber=FreeFileOpen pFileName For Input As #tFileNumber
Do
ReDim Preserve pArray(tStart)
Line Input #tFileNumber,tLoadStr
pArray(tStart)=tLoadStr
tStart=tStart+1
Loop Until EOF(tFileNumber)Close #tFileNumber
2、修改数组指定元素(行)Function AryLineSet(pAry() As String,pN As Long,pStr As String)
Dim tAryLen As Long
If pN<=tAryLen Then
pArray(pN)=pStr
End If
End Function3、将数组保存到文件Function AryPutToFile(pFileName As String,pAry() As String)
Dim tFileNumber As Integer
Dim tLoopEnd As Long
tFileNumber=FreeFile
tLoopEnd=UBound(pAry)
Open pFileName For OutPut As #tFileNumber
For tLoop=0 To tLoopEnd
Print #tFileNumber,pAry(tLoop)
Next
Close #tFileNumber
End Function
pArray(tStart)=tLoadStr
改为:
pArray(tStart)=tLoadStr & Chr(13) & Chr(10)将修改行的函数的:
pArray(pN)=pStr
改为:
pArray(pN)=pStr & Chr(13) & Chr(10)将写文件的函数改为:Function AryPutToFile(pFileName As String,pAry() As String)
Dim tFileNumber As Integer
tFileNumber=FreeFile
Open pFileName For Binary As #tFileNumber
Put #tFileNumber,1,pAry()
Close #tFileNumber
End Function这样做如果成功(没来得及测试),将使写文件速度快不止十倍。
02 Wind
03 虫虫
04 风中花
05 本·拉登
06 小仙
07 小松鼠
08 凯蒂猫
09 大水牛
10 蓝眼镜
11 呆头鸭
12 吐鲁番测试语句:FileLineSetByStr "SY.txt", "05 Microsoft Windows 98SE", 5测试结果:~FileLineSet.txt
01 小仙妹
02 Wind
03 虫虫
04 风中花
05 Microsoft Windows 98SE
06 小仙
07 小松鼠
08 凯蒂猫
09 大水牛
10 蓝眼镜
11 呆头鸭
12 吐鲁番程序模块:
Type tpFileText_LineInfo
LineOn As Long
LineEnd As Long
End TypeFunction FileLineSetByStr(pFileName As String, pStr As String, pLine As Long)
Dim tInfo As tpFileText_LineInfo
Dim tFileNumber As Integer
Dim tSurSize As Long
Dim tDesSize As Long
If FileSize("~FileLineSet.txt") Then
Kill "~FileLineSet.txt"
End If
tSurSize = FileSize(pFileName)
tInfo = FileLineAddGet(pFileName, pLine)
CullFileByFile pFileName, "~FileLineSet.txt", 1, tInfo.LineOn - 1, 1
tFileNumber = FreeFile
Open "~FileLineSet.txt" For Append As #tFileNumber
Print #tFileNumber, pStr
Close #tFileNumber
tDesSize = FileSize("~FileLineSet.txt")
CullFileByFile pFileName, "~FileLineSet.txt", tInfo.LineEnd, tSurSize, tDesSize
End FunctionFunction FileSize(pFileName As String) As Long
Dim tFileNumber As Integer
Dim tOutLng As Long
tFileNumber = FreeFile
Open pFileName For Binary As #tFileNumber
tOutLng = LOF(tFileNumber)
Close #tFileNumber
FileSize = tOutLng
End FunctionFunction CullFileByFile(pSurFileName As String, pDesFileName As String, pSurAddOn As Long, pSurAddEnd As Long, pDesAdd As Long)
Dim tSegLong As Long
Dim tSegAry() As Byte
Dim tFileNumber As Integer
tSegLong = pSurAddEnd - pSurAddOn
ReDim tSegAry(tSegLong)
tFileNumber = FreeFile
Open pSurFileName For Binary As #tFileNumber
Get #tFileNumber, pSurAddOn, tSegAry()
Close #tFileNumber
Open pDesFileName For Binary As #tFileNumber
Put #tFileNumber, pDesAdd, tSegAry()
Close #tFileNumber
End FunctionFunction FileLineAddGet(pFileName As String, pLine As Long) As tpFileText_LineInfo
Dim tFileNumber As Integer
Dim tLoop As Long
Dim tReadStr As String
Dim tOutType As tpFileText_LineInfo
Dim tOutLng As Long
Dim tLine As Long
tFileNumber = FreeFile
tLine = pLine
Open pFileName For Input As #tFileNumber
For tLoop = 1 To tLine
Line Input #tFileNumber, tReadStr
tOutType.LineOn = tOutType.LineEnd + 1
tOutType.LineEnd = Seek(tFileNumber) - 1
If EOF(tFileNumber) Then
If tLoop < tLine Then
tOutLng = 0
End If
Exit For
End If
Next
Close #tFileNumber
FileLineAddGet = tOutType
End Function