我现在做了好像都是把原来文件全部覆盖掉了。
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
13 个解决方案
#1
就此等运用,何不使用数据库?一个Access数据库,很简单,很方便。且安全性更高。
#2
整体读进 处理后 然后整体写入文件吧
查看你了下 pobjTS.Line是只读的。
Property Line As Long
只读
Scripting.TextStream 的成员
Current line number
查看你了下 pobjTS.Line是只读的。
Property Line As Long
只读
Scripting.TextStream 的成员
Current line number
#3
首先感谢两位能回答,但是我只是举个例的,
我是因为有的文件太大,不打不开,但是直到结构,
所以,我想修改其中的部分内容。所以就想实现上面的那个功能的。
望各位高手指点一下。
是否可以实现。
好像我知道的现在写文件的,都是会把存在的内容覆盖掉的。
我是因为有的文件太大,不打不开,但是直到结构,
所以,我想修改其中的部分内容。所以就想实现上面的那个功能的。
望各位高手指点一下。
是否可以实现。
好像我知道的现在写文件的,都是会把存在的内容覆盖掉的。
#4
就如你所说,我觉得你非常有必要把它修改为Access方式的。难度并不大。
#5
首先非常谢谢,我知道你的意思,
你的意思是说像我举的这个例子的功能(修改用户和密码),
是完全可以放在数据库里面的,
这个我理解,
但是现在我要修改的文件不是单纯修改用户和密码的功能的。
还有一些内容是无法放到数据库里面的,
如果能放的话,
我就不会用文件存储了(这个我不大懂,迫不得已才问这个方法的)。
望指点一下~
谢谢~
你的意思是说像我举的这个例子的功能(修改用户和密码),
是完全可以放在数据库里面的,
这个我理解,
但是现在我要修改的文件不是单纯修改用户和密码的功能的。
还有一些内容是无法放到数据库里面的,
如果能放的话,
我就不会用文件存储了(这个我不大懂,迫不得已才问这个方法的)。
望指点一下~
谢谢~
#6
哦
原来如此。。。
呵呵
不过貌似一般都是全读全写
原来如此。。。
呵呵
不过貌似一般都是全读全写
#7
你所看到的文件修改,在实际的实现上,都是重新创建文件。所谓的“覆盖”,也并非一定在物理原址重写,而往往是重新分配 FAT 链表。当然,在内存缓冲区中操作时有可能是“真的”覆盖原数据。
你可以用二进制方式打开文件,用 Seek 语句移动指针,然后用 Put 语句写入新的内容。Close 时,文件会重写。当然了,至少有部分扇区在 FAT 链表中被替换了。
你可以用二进制方式打开文件,用 Seek 语句移动指针,然后用 Put 语句写入新的内容。Close 时,文件会重写。当然了,至少有部分扇区在 FAT 链表中被替换了。
#8
你说的就是顺序文件,顺序文件啊...不就是要一点一点读取进来,是要修改的就修改,然后把读进来的和修改的都存新文件里面.
随机文件就想ls说的,定位,修改,保存...随机文件用的是记录,记录的长度是固定的,修改就限制在字段里面了.如果用随机文件修改顺序文件,那比如你密码以前是3字符,要修改成4字符,那后面的内容就必须后移1字节了..
随机文件就想ls说的,定位,修改,保存...随机文件用的是记录,记录的长度是固定的,修改就限制在字段里面了.如果用随机文件修改顺序文件,那比如你密码以前是3字符,要修改成4字符,那后面的内容就必须后移1字节了..
#9
用二进制打开可以“原地”修改
但是字节数不能变,想把4位长度的数据改成5位是不行的。
但是字节数不能变,想把4位长度的数据改成5位是不行的。
#10
首先谢谢各位、
关于用二进制修改、可以提供点例子吗?
我是用vb6.0的、刚开始用、许多都不大懂、
所以、望高手能给个例子、谢谢~
关于用二进制修改、可以提供点例子吗?
我是用vb6.0的、刚开始用、许多都不大懂、
所以、望高手能给个例子、谢谢~
#11
按行读取,内容不变的直接写到新文件,需修改的修改后写入新文件,最后删除原文件~~~~
#12
文件比较大、不好全部读取、否则就全部替换了。不用定点修改了。
还有、我研究了一下二进制修改好像不行的样子、
代码:
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"
还有、我研究了一下二进制修改好像不行的样子、
代码:
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"
#13
研究出来了、
感谢各位啊~
结帖送分了~
由于分不多、就每人分一点把~
感谢一下~
研究出来的代码:
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"
感谢各位啊~
结帖送分了~
由于分不多、就每人分一点把~
感谢一下~
研究出来的代码:
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"
#1
就此等运用,何不使用数据库?一个Access数据库,很简单,很方便。且安全性更高。
#2
整体读进 处理后 然后整体写入文件吧
查看你了下 pobjTS.Line是只读的。
Property Line As Long
只读
Scripting.TextStream 的成员
Current line number
查看你了下 pobjTS.Line是只读的。
Property Line As Long
只读
Scripting.TextStream 的成员
Current line number
#3
首先感谢两位能回答,但是我只是举个例的,
我是因为有的文件太大,不打不开,但是直到结构,
所以,我想修改其中的部分内容。所以就想实现上面的那个功能的。
望各位高手指点一下。
是否可以实现。
好像我知道的现在写文件的,都是会把存在的内容覆盖掉的。
我是因为有的文件太大,不打不开,但是直到结构,
所以,我想修改其中的部分内容。所以就想实现上面的那个功能的。
望各位高手指点一下。
是否可以实现。
好像我知道的现在写文件的,都是会把存在的内容覆盖掉的。
#4
就如你所说,我觉得你非常有必要把它修改为Access方式的。难度并不大。
#5
首先非常谢谢,我知道你的意思,
你的意思是说像我举的这个例子的功能(修改用户和密码),
是完全可以放在数据库里面的,
这个我理解,
但是现在我要修改的文件不是单纯修改用户和密码的功能的。
还有一些内容是无法放到数据库里面的,
如果能放的话,
我就不会用文件存储了(这个我不大懂,迫不得已才问这个方法的)。
望指点一下~
谢谢~
你的意思是说像我举的这个例子的功能(修改用户和密码),
是完全可以放在数据库里面的,
这个我理解,
但是现在我要修改的文件不是单纯修改用户和密码的功能的。
还有一些内容是无法放到数据库里面的,
如果能放的话,
我就不会用文件存储了(这个我不大懂,迫不得已才问这个方法的)。
望指点一下~
谢谢~
#6
哦
原来如此。。。
呵呵
不过貌似一般都是全读全写
原来如此。。。
呵呵
不过貌似一般都是全读全写
#7
你所看到的文件修改,在实际的实现上,都是重新创建文件。所谓的“覆盖”,也并非一定在物理原址重写,而往往是重新分配 FAT 链表。当然,在内存缓冲区中操作时有可能是“真的”覆盖原数据。
你可以用二进制方式打开文件,用 Seek 语句移动指针,然后用 Put 语句写入新的内容。Close 时,文件会重写。当然了,至少有部分扇区在 FAT 链表中被替换了。
你可以用二进制方式打开文件,用 Seek 语句移动指针,然后用 Put 语句写入新的内容。Close 时,文件会重写。当然了,至少有部分扇区在 FAT 链表中被替换了。
#8
你说的就是顺序文件,顺序文件啊...不就是要一点一点读取进来,是要修改的就修改,然后把读进来的和修改的都存新文件里面.
随机文件就想ls说的,定位,修改,保存...随机文件用的是记录,记录的长度是固定的,修改就限制在字段里面了.如果用随机文件修改顺序文件,那比如你密码以前是3字符,要修改成4字符,那后面的内容就必须后移1字节了..
随机文件就想ls说的,定位,修改,保存...随机文件用的是记录,记录的长度是固定的,修改就限制在字段里面了.如果用随机文件修改顺序文件,那比如你密码以前是3字符,要修改成4字符,那后面的内容就必须后移1字节了..
#9
用二进制打开可以“原地”修改
但是字节数不能变,想把4位长度的数据改成5位是不行的。
但是字节数不能变,想把4位长度的数据改成5位是不行的。
#10
首先谢谢各位、
关于用二进制修改、可以提供点例子吗?
我是用vb6.0的、刚开始用、许多都不大懂、
所以、望高手能给个例子、谢谢~
关于用二进制修改、可以提供点例子吗?
我是用vb6.0的、刚开始用、许多都不大懂、
所以、望高手能给个例子、谢谢~
#11
按行读取,内容不变的直接写到新文件,需修改的修改后写入新文件,最后删除原文件~~~~
#12
文件比较大、不好全部读取、否则就全部替换了。不用定点修改了。
还有、我研究了一下二进制修改好像不行的样子、
代码:
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"
还有、我研究了一下二进制修改好像不行的样子、
代码:
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"
#13
研究出来了、
感谢各位啊~
结帖送分了~
由于分不多、就每人分一点把~
感谢一下~
研究出来的代码:
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"
感谢各位啊~
结帖送分了~
由于分不多、就每人分一点把~
感谢一下~
研究出来的代码:
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"