We help IT Professionals succeed at work.

Filecopy

haggmar
haggmar asked
on
Medium Priority
2,358 Views
Last Modified: 2010-08-05
Hi everyone
I use vb6 and the filecopy statement to copy a zipped mdb file over isdn routers.
Are there any faster filecopy functions available in vb6 , I know there are possibilities to copy faster when I have windows programs that copy the same file in half the time. Is it also possible to get a event triggered to se how much of the file has been copied so I can make a progressbar for that spesifict file??

Comment
Watch Question

Melih SARICAMelih SARICA
CERTIFIED EXPERT

Commented:
if u wanna use ur own progress bar u must copy ur file with codes... block by block

u can use Ftp upload or u can use Internet functions to get or put files to other Computers...

o can read file in to a stream  adn write it to the target locatiion .. and u can control the progress...

Author

Commented:
ftp is not an option because this is not over the internet This is a Headquarter that distributes prices and information to all its stores. the stores do not have a webserver so i only ping the stores and copy the files over via intranet

I need som sample code


Melih SARICAMelih SARICA
CERTIFIED EXPERT

Commented:

Ok .. then

create a file copy Procedure
  in procedure
  load ur source file in to a file stream ..
  and pump  ur source in to a target file stream ..
  tagret file stream must  be created in target folder..
   
  u can pump ur stream in small amounts of data .. and u can set ur progress bar while pumping data ..

  each time u pump .. increase the value of the progress bar

 u can use scripting.filesystemobject

Author

Commented:
ok do tou have any sample code for this, i have never uses the scripting.filesystemobject before
Melih SARICAMelih SARICA
CERTIFIED EXPERT

Commented:

here is a brief example
   
Dim msourObj As New Scripting.FileSystemObject
Dim mtargObj As New Scripting.FileSystemObject

Dim msourceFile As TextStream
Dim mtargetFile As TextStream


Set msourceFile = msourObj.OpenTextFile("c:\try.txt", ForReading, False)
Set mtargetFile = msourObj.CreateTextFile("\\192.168.33.11\c$\trycopy.txt", True, false)

counter = 0
While Not msourceFile.AtEndOfStream
   
   mtargetFile.WriteLine (msourceFile.ReadLine)
   counter = counter + 1
   MsgBox (Str(counter))
Wend

 

Author

Commented:
hmmmm
will this only work for text files??

i am copying textfiles and zipfiles

Melih SARICAMelih SARICA
CERTIFIED EXPERT

Commented:
Try 4 zip files...  if it doesnt work 4 zip files.. use standart VB openfile command for them
read in binary mode..
and write to a source file in binary mode again

Author

Commented:
ok
u have sample code for that?
Melih SARICAMelih SARICA
CERTIFIED EXPERT

Commented:
Dim tempvar(2048) As Byte
Open "c:\try.rar" For Binary As #1
Open "\\192.168.33.11\c$\try.rar" For Binary As #2
counter = 0
filelength = LOF(1)
dsize = CInt(filelength / 2048) - 1
For cnt = 1 To dszie
 Get #1, 2048, tempvar
 Put #2, , tempvar
 counter = counter + 1
 Next cnt
remainder = CLng(LOF(1) - (CLng((filelength / 2048) - 1) * 2048))
Get #1, remainder, tempvar
Put #2, remainder, tempvar

Close #1
Close #2

Author

Commented:
doesnt work
the zipfile is corrupted after copying with this function
without a progress bar
"cmd.exe /c copy <source filename with path> <destination file name>
Bhagyesh Trivedi
Melih SARICAMelih SARICA
CERTIFIED EXPERT

Commented:

i did not try it..
   change this  part

remainder = CLng(LOF(1) - (CLng((filelength / 2048) - 1) * 2048))
Get #1, remainder, tempvar
Put #2, , tempvar



Author

Commented:
sorry
still the same error when opening the zipfile after copying

cannot open file: it does not appear to be a valid archive. If you downloaded this file, try downloading the file again.

the sourcefile work just fine

Melih SARICAMelih SARICA
CERTIFIED EXPERT

Commented:

In this Code error  is  at the end..
try this instead

remainder = CLng(LOF(1) - (CLng((filelength / 2048) - 1) * 2048))
dim tmpdata(remainder)

  Get #1, remainder, tmpdata
  Put #2, , tmpdata

Author

Commented:
same error occured ;(
but i had to change your code
as you wrote it it is wrong vb 6 syntax


I wrote dim tmpData() as byte
redim(tmpdata(remainder))

get #1, remainder, tmpdata
put #2, , tmpdata

any more ideas?

Melih SARICAMelih SARICA
CERTIFIED EXPERT

Commented:
I ve tried this code .. and it works fine


Dim tempvar(2048) As Byte
Open "c:\try.rar" For Binary As #1
Open "\\192.168.33.11\c$\try.rar" For Binary As #2
counter = 0
filelength = LOF(1)
cnt = 0
dsize = CInt(filelength / 2048) - 1
For cnt = 1 To dsize
 Get #1, , tempvar
 Put #2, , tempvar
 counter = counter + 1
 Next cnt
remainder = CLng(LOF(1) - (CLng((filelength / 2048) - 1) * 2048))
Get #1, , tempvar
Put #2, , tempvar

Close #1
Close #2

Author

Commented:
well the same code doesnt work for me
have you tried it on a .zip file and not a .rar file?

or any other ways of doing this?
Melih SARICA
CERTIFIED EXPERT
Commented:
Unlock this solution and get a sample of our free trial.
(No credit card required)
UNLOCK SOLUTION

Author

Commented:
hmmmm
very strange
i tried it on a exefile and it worked fine
but not on my zip files

any ideas why??
Melih SARICAMelih SARICA
CERTIFIED EXPERT

Commented:
try with an other zip file..

As u see its not deleting the Target zip file..

If there is a file with the same name.. &#305;ts appends the old file in the target path. adding source file at the edn of target file..

Delete target file first and then copy source file




Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a sample view!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.