 |
我用VB5编了一个读取文件的程序,用二进制方式读取,可是当我把文件读完后再写入另一个文件,为什么就会出错(出错表现在,如果是EXE文件则说此文件不是有效的Win32程序:如果是图象文件则看见什么了没有,本来文件是有内容的),请问是怎么一回事
程序如下:
情况一(正常):
Dim a() As Byte
Open "c:\windows\desktop\flash.exe" For Binary As #2
Open "d:\flash.exe" For Binary As #1
Dim i As Long
i = 0
Do While Not EOF(1)
i = i + 1
ReDim a(1 To i)
Get #1, , a(i)
loop
Close 1
Close 2
情况二(以上错误)
Dim a() As Byte
Open "c:\windows\desktop\flash.exe" For Binary As #2
Open "d:\flash.exe" For Binary As #1
Dim i As Long
i = 0
Do While Not EOF(1)
i = i + 1
ReDim a(1 To i)
Get #1, , a(i)
Loop
For s = 1 To i
Put #2, , a(s)
Next
Close 1
Close 2
(zttjhm)
|
| |
|
 |
问题出在你的ReDim语句上,每次你用ReDim改变数组大小时,以前读进来的数都会被仍掉,所以写的时候除了最后一个字节都不对。要保留以前读的数,应该改为:
ReDim Preserve a(1 To i)
实际上,你可以使用FileLen得到文件长度,这样程序可以简化:
Dim a() As Byte
Open "c:\windows\desktop\flash.exe" For Binary As #2
Open "d:\flash.exe" For Binary As #1
Dim i As Long
i = 0
ReDim a(1 To FileLen("c:\windows\desktop\flash.exe"))
Do While Not EOF(1)
i = i + 1
Get #1, , a(i)
Loop
For s = 1 To i
Put #2, , a(s)
Next
Close 1
Close 2
此问题由李海回答。
附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, 磁盘、文件和目录, disk, file, fat, directory, folder。
|
| |
|
| |
|
| |
|
|