紫冰枫 发表于 2012-10-11 22:09:54

求助,为什么文件复制失败?。。。

代码如下,复制一个文件,并且用进度条展现进度,不知道错在哪里了,文件无法复制成功,求解答; 用大于2M的文件测试
$FileCopy = _CopyWithProgress("f:\a\新建文件夹 (2)\", "D:\temp\", 2048)
;检查返回代码,看看是否正确复制文件
If $FileCopy = 0 Then
MsgBox(0, "复制完成", "文件复制成功.")
Else
MsgBox(16, "复制完成", "文件复制失败.")
EndIf

Func _CopyWithProgress($inSource, $inDest, $ChunkSize = 2048)
       $SourceSize = DirGetSize ($inSource)
        $Chunks = $SourceSize / $ChunkSize
        ProgressOn("文件复制", "正在复制...", "从: " & $inSource & @LF & "到: " & $inDest)
        For $i = 0 To $Chunks
   ProgressSet((($i + 1) / $Chunks) * 100)
Next
ProgressOff()
        $DestSize = DirGetSize($inDest)
If $SourceSize = $DestSize Then
    Return 0
Else
    Return 1
EndIf
EndFunc

user3000 发表于 2012-10-11 22:51:37

我晕, 你发的代码里哪里有实现复制功能的语句?
文件复制不是写几个中文"复制"就能实现的吧?

lpxx 发表于 2012-10-11 23:06:28

是啊,论坛也有复制文件进度条的例子,要多看看,多想想。

魔导 发表于 2012-10-11 23:22:46

这个很有个性。。。
复制简单的
DirCopy ( "源目录", "目标目录" [, 标志] )
FileCopy ( "源文件", "目标路径" [, 标志] )

但是进度条这个我真不会

gujifly 发表于 2012-10-11 23:32:32

{:face (319):}整个代码块都没有出现一句复制的语句,能复制成功 才怪呢。

gujifly 发表于 2012-10-11 23:47:32

{:face (258):}你这个例子,应该是使用 filewrite 来实现复制的,按指定大小,

把文件分成n段,逐段写入并设置进度条显示。

$SourceFile = FileOpen($inSource,16) ;以二进制形式打开源文件
$DestFile = FileOpen($inDest, 26) ;打开或创建目标文件
$Chunks = $SourceSize / $ChunkSize ;获取源文件大小,计算可以分成多少段写入

For $i = 0 to $Chunks ;从第0字节开始
      $Data = FileRead($SourceFile, $ChunkSize) ;一次读取ChunkSize字节
      FileWrite($DestFile, $Data) ;写入目标文件
页: [1]
查看完整版本: 求助,为什么文件复制失败?。。。