关于用Open语句写文件替换文件内容的问题

Carlven2012 2014-09-04 02:23:55
比如已经存在一个文件 C:\1.ini,我现在想写入一段新的内容,把它里面已有的内容全部替换掉,请问怎么操作?
我是这样的:
Dim byt(19) as Byte
'///////////////////这儿初始化byt
'然后我像下面这样写入,发现文件前面部分是新写入的内容,但后面却依然保留了它原来的内容。
Open "C:\1.ini" For Binary As #1
Put #1,,byt
Close #1
我是要把它以前的内容全替换掉的呀,请问该怎么办? 初级问题,请勿见笑。
...全文
250 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Carlven2012 2014-09-05
  • 打赏
  • 举报
回复
引用 1 楼 clear_zero 的回复:
试试看这个 Open "D:\chat.txt" For Output As #1 a = Text1.Text Print #1, a Close #1
这个文件模式是可以,但我要写入的是一些二进制数据,结果写入后查看,并不是我的数据啊,都变了。
Carlven2012 2014-09-05
  • 打赏
  • 举报
回复
其实我只是想当然以为在Open ... For Binary语句里面就可以实现,如果实在不行就算了,就只有Kill了之后再写了。。
Carlven2012 2014-09-05
  • 打赏
  • 举报
回复
唉,看来也没有什么好的简洁的办法,我倒是想到一个:就是先写入文件,然后再把文件缩短为写入内容的长度:

    Dim byt(19) as Byte
    '///////////////////这儿初始化byt
    Open "C:\1.ini" For Binary As #1
    Put #1,,byt
    Close #1

    '接下来就是缩短文件
    Dim SA As SECURITY_ATTRIBUTES
    hFile = CreateFile("C:\1.ini", GENERIC_READ Or GENERIC_WRITE, 0, SA, OPEN_EXISTING, 0, 0)
    SetFilePointer hFile, 20, 0, FILE_BEGIN
    SetEndOfFile hFile
    CloseHandle hFile
of123 2014-09-05
  • 打赏
  • 举报
回复
二进制方式写文件,是有这个问题。可以先删除旧文件再写。 如果你不介意文件大小的话:
Dim byt() as Byte, i As Integer

Redim byt(19)
'初始化 byt
Open "C:\1.ini" For Binary As #1
n = EOF(1) - 1
If n > 19 Then
    Redim Preserve byt(n)
    For i = 20 To n
        byt(i) = 32
    Next i
End If
Put #1,,byt
Close #1
clear_zero 2014-09-05
  • 打赏
  • 举报
回复
引用 3 楼 Carlven2012 的回复:
[quote=引用 1 楼 clear_zero 的回复:] 试试看这个 Open "D:\chat.txt" For Output As #1 a = Text1.Text Print #1, a Close #1
这个文件模式是可以,但我要写入的是一些二进制数据,结果写入后查看,并不是我的数据啊,都变了。[/quote] 那你就删掉原有文件,重新建立一个就可以了吧
feimychen 2014-09-05
  • 打赏
  • 举报
回复
先以Open "C:\1.ini" For output As #1方式打开,再close 再以Open "C:\1.ini" For Binary As #1打开 并写入
threenewbee 2014-09-04
  • 打赏
  • 举报
回复
文本文件没法直接替换,只能全部读取到字符串中,替换了再整体写回。
clear_zero 2014-09-04
  • 打赏
  • 举报
回复
试试看这个 Open "D:\chat.txt" For Output As #1 a = Text1.Text Print #1, a Close #1

7,762

社区成员

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

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