PDA

View Full Version : giúp mình code copy file với :(



conan52
07-09-2010, 17:06
Private Sub cmdbrowse_Click()
Dim a
Dim m
'Xác ??nh th? m?c
Set PathFolder = CreateObject("Shell.Application") _
.BrowseForFolder(0, "Tim den thu muc :", 0)
If Not PathFolder Is Nothing Then Txtpath.Text = PathFolder.Self.Path ' ??a ???ng d?n th? m?c vào textbox
End Sub

Private Sub Command1_Click()
a = Txtpath.Text
m = "\abc.exe"
FileCopy "a &\abc.exe", "D:\abc.exe"
End Sub
cả nhà cho mình hỏi cách copy file ở trên có đúng k? Nếu k hưỡng dần mình copy với. Yêu cầu đặt ra khi copy là đã có đường dẫn đến folder chứa file rồi bây giơ phải copy 1 file trong folder ấy đến một Folder xác định. Tớ tks cả nhà trc ạ :)

QuyNam
09-09-2010, 20:30
khi bạn dùng hàm FileCopy, VB sẽ làm giúp bạn tất cả mọi thứ. Như vậy, bạn sẽ không kiểm soát dc quá trình copy. Nếu file có dung lượng lớn thì có thể treo máy. Để copy file hiệu quả, bạn nên copy theo block. Ta chia file cần copy ra thành từng khối nhỏ (block). Code mẫu :


'Nho Reference thu vien Scripting Runtime truoc
'sSource la duong dan file nguon
'sDestination la duong dan file dich
public function CopyFile(byval sSource as string, byval sDestination as string)as boolean
Dim lBlockSize as long,lTotal as long
Dim fso as new FileSystemObject
Dim Content() as byte 'mang byte chua noi dung file
on error goto Cancel
lBlockSize =524288 'VD lay size block là 512KB
lTotal = fso.GetFile(sSource).Size
open sSource for binary as #1
open sDestination for binary as #2
do while lTotal>0
if lBlockSize>=lTotal then lBlockSize=lTotal
redim Content(lBlockSize-1)
get #1,,Content
put #1,,Content
loop
Close
CopyFile=True
msgbox "Copy thanh cong"
exit sub
Cancel:
msgbox "Loi copy file"
end sub

cơ bản là như vậy. bạn có thể phát triển thêm. Cái chỗ blocksize ko nhất thiết phải là 512KB. Bạn có thể viết một hàm lựa chọn blocksize sao cho phù hợp với từng kích cỡ file khác nhau.