vb6.0 修改txt文件的数据,不是创建和写入

wandazcc 2011-11-18 03:41:58
我想修改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

...全文
491 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wandazcc 2011-11-21
  • 打赏
  • 举报
回复
研究出来了、
感谢各位啊~
结帖送分了~
由于分不多、就每人分一点把~
感谢一下~
研究出来的代码:
Dim info As String
info = "test"
Open "F:\test.txt" For Binary Access Write As #1

'Input #1, MyString, MyNumber
'Seek #1, 11
Put #1, 11, info
Close #1
MsgBox "OK"
wandazcc 2011-11-21
  • 打赏
  • 举报
回复
文件比较大、不好全部读取、否则就全部替换了。不用定点修改了。

还有、我研究了一下二进制修改好像不行的样子、
代码:
Dim info As String
info = "5432"
Open "F:\test.txt" For Input As #1

'Input #1, MyString, MyNumber
Seek #1, 11
Input #1, info
Close #1
MsgBox "OK"

booksoon 2011-11-21
  • 打赏
  • 举报
回复
按行读取,内容不变的直接写到新文件,需修改的修改后写入新文件,最后删除原文件~~~~
wandazcc 2011-11-21
  • 打赏
  • 举报
回复
首先谢谢各位、
关于用二进制修改、可以提供点例子吗?
我是用vb6.0的、刚开始用、许多都不大懂、
所以、望高手能给个例子、谢谢~
yachong 2011-11-18
  • 打赏
  • 举报
回复
用二进制打开可以“原地”修改
但是字节数不能变,想把4位长度的数据改成5位是不行的。
王二.麻子 2011-11-18
  • 打赏
  • 举报
回复
你说的就是顺序文件,顺序文件啊...不就是要一点一点读取进来,是要修改的就修改,然后把读进来的和修改的都存新文件里面.

随机文件就想ls说的,定位,修改,保存...随机文件用的是记录,记录的长度是固定的,修改就限制在字段里面了.如果用随机文件修改顺序文件,那比如你密码以前是3字符,要修改成4字符,那后面的内容就必须后移1字节了..
of123 2011-11-18
  • 打赏
  • 举报
回复
你所看到的文件修改,在实际的实现上,都是重新创建文件。所谓的“覆盖”,也并非一定在物理原址重写,而往往是重新分配 FAT 链表。当然,在内存缓冲区中操作时有可能是“真的”覆盖原数据。

你可以用二进制方式打开文件,用 Seek 语句移动指针,然后用 Put 语句写入新的内容。Close 时,文件会重写。当然了,至少有部分扇区在 FAT 链表中被替换了。
贝隆 2011-11-18
  • 打赏
  • 举报
回复

原来如此。。。
呵呵
不过貌似一般都是全读全写
wandazcc 2011-11-18
  • 打赏
  • 举报
回复
首先非常谢谢,我知道你的意思,
你的意思是说像我举的这个例子的功能(修改用户和密码),
是完全可以放在数据库里面的,
这个我理解,
但是现在我要修改的文件不是单纯修改用户和密码的功能的。
还有一些内容是无法放到数据库里面的,
如果能放的话,
我就不会用文件存储了(这个我不大懂,迫不得已才问这个方法的)。
望指点一下~
谢谢~


贝隆 2011-11-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wandazcc 的回复:]
首先感谢两位能回答,但是我只是举个例的,
我是因为有的文件太大,不打不开,但是直到结构,
所以,我想修改其中的部分内容。所以就想实现上面的那个功能的。
望各位高手指点一下。
是否可以实现。
好像我知道的现在写文件的,都是会把存在的内容覆盖掉的。
[/Quote]
就如你所说,我觉得你非常有必要把它修改为Access方式的。难度并不大。
wandazcc 2011-11-18
  • 打赏
  • 举报
回复
首先感谢两位能回答,但是我只是举个例的,
我是因为有的文件太大,不打不开,但是直到结构,
所以,我想修改其中的部分内容。所以就想实现上面的那个功能的。
望各位高手指点一下。
是否可以实现。
好像我知道的现在写文件的,都是会把存在的内容覆盖掉的。
无·法 2011-11-18
  • 打赏
  • 举报
回复
整体读进 处理后 然后整体写入文件吧

查看你了下 pobjTS.Line是只读的。

Property Line As Long
只读
Scripting.TextStream 的成员
Current line number
贝隆 2011-11-18
  • 打赏
  • 举报
回复
就此等运用,何不使用数据库?一个Access数据库,很简单,很方便。且安全性更高。

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧