thatsthefactsjac
asked on
File in use
I have a function that overwrites a file. Is there a way to determine whether the destination file (the one that is overwritten) is in use?
Thanks
Thanks
some file errors
55 File already open
57 Device I/O error
58 File already exists
59 Bad record length
61 Disk full
62 Input past end of file
63 Bad record number
67 Too many files
68 Device unavailable
70 Permission denied
71 Disk not ready
74 Can't rename with different drive
75 Path/File access error
76 Path not found
55 File already open
57 Device I/O error
58 File already exists
59 Bad record length
61 Disk full
62 Input past end of file
63 Bad record number
67 Too many files
68 Device unavailable
70 Permission denied
71 Disk not ready
74 Can't rename with different drive
75 Path/File access error
76 Path not found
On Error Resume Next
Open "c:\test" For Output Lock Read Write As #1
If Err.Number = 70 Then
MsgBox "File in Use"
End If
Open "c:\test" For Output Lock Read Write As #1
If Err.Number = 70 Then
MsgBox "File in Use"
End If
hes, open for input, otherwise if it is there it will be overwritten!!!
ASKER
I also have several other files that must also be copied. Is there a way to incorporate these operations into a transaction and rollback if one file copy fails?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
You'd probably have to do it manually. I.e. you could save copies of all the files you are overwriting. Then if the last copy fails, go back and put back all the original versions.
No way to "rollback" file system changes that I know of.
No way to "rollback" file system changes that I know of.
Note that you can only have 512 open files at a time (this is the limit of the freefile/file number).
Zaphod.
Zaphod.
ASKER
I also have several other files that must also be copied. Is there a way to incorporate these operations into a transaction and rollback if one file copy fails?
Hi!
How about trying to rename the file to something else?
Something like this:
On Error Goto CheckOut
Name "C:\MyFile.txt" As "C:\MyFile.dat"
Name "C:\MyFile.dat" As "C:\MyFile.txt"
CheckOut:
Msgbox "There is an error - probably file in use."
Exit Sub
How about trying to rename the file to something else?
Something like this:
On Error Goto CheckOut
Name "C:\MyFile.txt" As "C:\MyFile.dat"
Name "C:\MyFile.dat" As "C:\MyFile.txt"
CheckOut:
Msgbox "There is an error - probably file in use."
Exit Sub
ASKER
Thanks for the suggestions!
It depends on how exactly you are opening the file.