vb6.0 修改txt文件的数据,不是创建和写入
我想修改txt文件中的部分内容,没变更的数据也不被变更。
我现在做了好像都是把原来文件全部覆盖掉了。
test.txt的内容:
user:a001
password:123
我只想变更password的内容:
user:a001
password:234
怎么样实现上面的功能。
我的代码(刚接触不懂):
Set pobjFSO = CreateObject("Scripting.FileSystemObject")
If Not (pobjFSO.FileExists("F:\test.txt")) Then
Exit Sub
Else
Set pobjFile = pobjFSO.GetFile("F:\test.txt")
End If
Set pobjTS = pobjFile.OpenAsTextStream(ForWriting)
pobjTS.Line = 2
pobjTS.WriteLine ("234")
pobjTS.Close
Set pobjTS = Nothing
[解决办法]
就此等运用,何不使用数据库?一个Access数据库,很简单,很方便。且安全性更高。
[解决办法]
整体读进 处理后 然后整体写入文件吧
查看你了下 pobjTS.Line是只读的。
Property Line As Long
只读
Scripting.TextStream 的成员
Current line number
[解决办法]
你所看到的文件修改,在实际的实现上,都是重新创建文件。所谓的“覆盖”,也并非一定在物理原址重写,而往往是重新分配 FAT 链表。当然,在内存缓冲区中操作时有可能是“真的”覆盖原数据。
你可以用二进制方式打开文件,用 Seek 语句移动指针,然后用 Put 语句写入新的内容。Close 时,文件会重写。当然了,至少有部分扇区在 FAT 链表中被替换了。
[解决办法]
你说的就是顺序文件,顺序文件啊...不就是要一点一点读取进来,是要修改的就修改,然后把读进来的和修改的都存新文件里面.
随机文件就想ls说的,定位,修改,保存...随机文件用的是记录,记录的长度是固定的,修改就限制在字段里面了.如果用随机文件修改顺序文件,那比如你密码以前是3字符,要修改成4字符,那后面的内容就必须后移1字节了..
[解决办法]
用二进制打开可以“原地”修改
但是字节数不能变,想把4位长度的数据改成5位是不行的。
[解决办法]
按行读取,内容不变的直接写到新文件,需修改的修改后写入新文件,最后删除原文件~~~~