Open PathFile For Binary As……二进制写文件,输出后,内容不符合,请教!

时间:2021-01-20 20:26:48
    Dim ResFile() As Byte
    Dim FileNo As Integer
    FileNo = FreeFile

    ResFile = LoadResData(101, "CUSTOM")

    Open "C:\x.dll" For Binary As FileNo
    Put FileNo , , ResFile
    Close FileNo 
   
这样写应该没问题吧?

在向写入 C 盘 x.dll的时候,如果已经存在 x.dll,且 x.dll的文件比 资源文件 里的 大

那么 写入后,x.dll 会出现多余部分···

例如 C盘下存在1个 x.dll 有 123456 字节,如果我写入的是 123450 字节,那么,文件还是123456字节,

会多出6个字节···

难道Open写入的时候,不是全新重新文件的??

只能先删除原来,再重新写入?

5 个解决方案

#1


Open "C:\x.dll" For Binary As FileNo
你这句缺省是复写,你试试写成这样:
Open "C:\x.dll" For Binary access write As FileNo

#2


测试后一样,简单的写个 输出文本内容测试下,应该不是我写得不对,可能本来就是这样

     Open "C:\x.txt" For Binary Access Write As #1
    Put #1, , "112233"
    Close #1

如果c盘下已经有存在 x.txt,内容为 123456789

那么写入 112233后,文本内容是 112233789

写的时候是替换掉原来的,多余的则保留···

#3


你这是追加,不是复盖。

先删除了原文件,再写

#4


不是追加,是替换····追加会保留原来全部

只能先删除原文件吗?

#5


二进制方式始终是在原文件上进行修改写入,要新建写先用 kill 进行删除。

#1


Open "C:\x.dll" For Binary As FileNo
你这句缺省是复写,你试试写成这样:
Open "C:\x.dll" For Binary access write As FileNo

#2


测试后一样,简单的写个 输出文本内容测试下,应该不是我写得不对,可能本来就是这样

     Open "C:\x.txt" For Binary Access Write As #1
    Put #1, , "112233"
    Close #1

如果c盘下已经有存在 x.txt,内容为 123456789

那么写入 112233后,文本内容是 112233789

写的时候是替换掉原来的,多余的则保留···

#3


你这是追加,不是复盖。

先删除了原文件,再写

#4


不是追加,是替换····追加会保留原来全部

只能先删除原文件吗?

#5


二进制方式始终是在原文件上进行修改写入,要新建写先用 kill 进行删除。