问题出在你的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 
<END>
