下面的程序是我编的拷贝文件的函数,可是令我遗憾的是,拷贝过去文件的内容和大小都不对!哪位大侠帮我挑一挑毛病?Private Function CopyFile(fFrom As String, fTo As String) As Boolean
    Dim Buf As String, Buf2 As String, FL As Long, I As Long, R As Integer, C As Long
    
    On Error GoTo Copy_File_err
    Open fFrom For Binary Access Read As #1
    Open fTo For Binary Access Write As #2
    FL = LOF(1)
    I = Int(FL / 1024)
    R = FL Mod 1024
    Buf = String(1024, " ")
    For C = 1 To I
        Get #1, , Buf
        Put #2, , Buf
    Next C
    Buf2 = String(R, " ")
    Get #1, , Buf2
    Put #2, , Buf2
    Close #1
    Close #2
    CopyFile = True
    Exit Function
Copy_File_err:
    Close #1
    Close #2
    MsgBox "文件操作失败!请检查文件是否被占用。", vbOKOnly, "错误"
    CopyFile = False
End Function

解决方案 »

  1.   


    在vb中可以用FileCopy拷贝的
    FileCopy "c:\a.mdb", "d:\bak.mdb"
      

  2.   

    555555555555555555555555同意 lihonggen0(李洪根,MS MVP,标准答案来了) 这样多简单呀~
      

  3.   

    我试过你编的CopyFile了,不知道你是拷贝的什么文件,我随便建了一个.txt文件试了试,拷贝的很成功,没什么问题呀!!??
      

  4.   

    请问filecopy是函数还是什么啊,我在msdn中函数找不到啊。
    但是确实找到了filecopy的用法。
      

  5.   

    555555555555555555555555555555555555555
    同意MVP 老大的!!这样多简单啊!!!!!-_-#
      

  6.   

    我拷贝的文件是 .DBF文件,text可能看不出来错误吧,我觉得。
    FileCopy我试了,挺好的,就是没有返回值,大概用on error处理异常
      

  7.   

    try:
    I = Int(FL / 1024)+1
        R = FL Mod 1024
        Buf = String(1024, " ")
        For C = 1 To I
            Get #1, , Buf
            Put #2, , Buf
        Next C
      

  8.   

    Dim file() As Byte
    ......
    用 byte 会不会好一点呢?照上面的看-->还是用 filecopy 方便一点!
      

  9.   

    多此一举,用FileCopy完全可以。
      

  10.   

    还有,当然要用Byte()啊!(原以为你就是用Byte()的)总之,就算用API也比这个要安全。建议用FileCopy
      

  11.   

    那我用String 为啥不行呀?
    拷贝的问题倒是解决了,用FileCopy 挺好,可是这个Get Put String到底
    那里有问题,是什么问题?以后编程也会用到的,拷贝只是一个简单应用
    阿。
      

  12.   

    我拷贝的文件是 .DBF文件,text可能看不出来错误吧,我觉得。
    FileCopy我试了,挺好的,就是没有返回值,大概用on error处理异常
    我同意同意他的看法
      

  13.   

    你的问题在于你使用了String作为缓冲区。在西文操作系统下可以,但是在中文系统下处理二进制文件一定会出错。操作系统会自作聪明地按字符处理你的数据,遇到不存在的内码,会自动处理为"?"。
    用Byte数组试试。
      

  14.   

    我做了修改,哎!还是不行!原来是568字节变成了1591字节!Private Function CopyFile(fFrom As String, fTo As String) As Boolean
        Dim Buf(0 To 1023) As Byte, FL As Long, I As Long, R As Integer, C As Long
        
        On Error GoTo Copy_File_err
        Open fFrom For Binary Access Read As #1
        Open fTo For Binary Access Write As #2
        FL = LOF(1)
        I = Int(FL / 1024)
        R = FL Mod 1024
        For C = 1 To I
            Get #1, 1024, Buf
            Put #2, 1024, Buf
        Next C
        Get #1, R, Buf
        Put #2, R, Buf
        Close #1
        Close #2
        CopyFile = True
        Exit Function
    Copy_File_err:
        Close #1
        Close #2
        MsgBox "文件操作失败!请检查文件是否被占用。", vbOKOnly, "错误"
        CopyFile = False
    End Function
      

  15.   

    Private Function CopyFile(fFrom As String, fTo As String) As Boolean
        Dim Buf() As Byte, FL As Long
        FL = filelen(fFrom)
        redim buff(FL-1)
        On Error GoTo Copy_File_err
        Open fFrom For Binary Access Read As #1
        Open fTo For Binary Access Write As #2
            Get #1, , Buf
            Put #2, , Buf    
        Close #2
        Close #1
        CopyFile = True
        Exit Function
    Copy_File_err:
        Close #1
        Close #2
        MsgBox "文件操作失败!请检查文件是否被占用。", vbOKOnly, "错误"
        CopyFile = False
    End Function
      

  16.   

    可以把文件从一个地方move到另一个地方.
      

  17.   

    Dim FSO As Object
        Dim Folder As Object
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Set Folder = FSO.GetFolder("C:\INID_share\KAIINUPD")
      

  18.   

    也可以调用api函数CopyFile:
    声明:
    Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
    返回值:
    Long,非零表示成功,零表示失败。会设置GetLastError
    参数:
    lpExistingFileName -  String,源文件名  lpNewFileName --  String,目标文件名  bFailIfExists --  Long,如果设为TRUE(非零),那么一旦目标文件已经存在,则函数调用会失败。否则目标文件被改写该函数比较简单,我就不写例子了
      

  19.   

    你查一下msdn里有filesystemobject这些东西.
      

  20.   

    这个问题
    http://expert.csdn.net/Expert/topic/2505/2505857.xml?temp=.8891413
    帮帮忙