
已经做得差不多了呀,不过为了效率和广泛性,建议使用API来 *** 作文件,而不是洞桐猛FSO对象
建议增加打开文件、移动文件、重命名文件、查看文件属性的功能
*** 作文件需要的API及声明:
复制文件:
1.CopyFile 2.CopyFileEx 3.ReadFile->WriteFile 4.NtReadFile->NtWriteFile
Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As LongPrivate Declare Auto Function CopyFileEx Lib "kernel32.dll" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal lpProgressRoutine As CopyProgressRoutine, ByVal lpData As IntPtr, ByRef pbCancel As Boolean, ByVal dwCopyFlags As CopyFileFlags) As Long
Private Declare Function ReadFile Lib "kernel32" Alias "ReadFile" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As OVERLAPPED) As Long
Private Declare Function WriteFile Lib "kernel32" Alias "WriteFile" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As OVERLAPPED) As Long
Private Declare Function NtReadFile Lib "NTDLL.DLL" (ByVal Handle 轮察As Long, ByVal Events As Long, ByVal ApcRoutine As Long, ByVal ApcContext As Long, ByVal IoStatus As Long, ByVal Buffer As Long, ByVal Length As Long, Optional ByVal Number As Long, Optional ByVal Keys As Long) As Long
Private Declare Function NtWriteFile Lib "NTDLL.DLL" (ByVal Handle As Long, ByVal Events As Long, ByVal ApcRoutine As Long, ByVal ApcContext As Long, ByVal IoStatus As Long, ByVal Buffer As Long, ByVal Length As Long, Optional ByVal Number As Long, Optional ByVal Keys As Long) As Long
删除文件:
1.CreateFile 2.NtCreateFile 3.NtSetInformationFile 4.NtDeleteFile
Private Declare Function CreateFile Lib "kernel32" Alias 纳桥"CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As LongPrivate Declare Function NtCreateFile Lib "NTDLL.DLL" (ByRef FileHandle As Long, ByVal DesiredAccess As Long, ObjectAttributes As Any, IoStatusBlock As Any, Allocation As Long, ByVal FileAttributes As Long, ByVal ShareAccess As Long, ByVal CreateDisposition As Long, ByVal CreateOptions As Long, ByVal EaBuffer As Long, ByVal EaLength As Long) As Long
Private Declare Function NtSetInformationFile Lib "NTDLL.DLL" (ByVal FileHandle As Long, IoStatusBlock As IO_STATUS_BLOCK, FileInformation As Any, ByVal Length As Long, ByVal FileInformationClass As Long) As Long
Private Declare Function NtDeleteFile Lib "NTDLL.DLL" (ObjectAttributes As OBJECT_ATTRIBUTES) As Long
移动文件:
1.MoveFile 2.MoveFileEx 3.NtSetInformationFile
Private Declare Function MoveFile Lib "kernel32" Alias "MoveFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String) As LongPrivate Declare Function MoveFileEx Lib "kernel32" Alias "MoveFileExA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal dwFlags As Long) As Long
重命名文件:
1.MoveFile 2.MoveFileEx 3.NtSetInformationFile
以上 *** 作都通用:
SHFileOperation
Private Declare Function SHFileOperation Lib "shell32.dll" Alias " SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long创建、打开文件(夹):
1.CreateFile 2.NtCreateFile 3.CreateDirectory 4.CreateDirectoryEx
Private Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpPathName As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As LongPrivate Declare Function CreateDirectoryEx Lib "kernel32" Alias "CreateDirectoryExA" (ByVal lpTemplateDirectory As String, ByVal lpNewDirectory As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long
查看文件属性:
1.SHObjectProperties 2.ShellExecuteEx
Private Declare Function ShellExecuteEx Lib "shell32.dll" (ByRef s As SHELLEXECUTEINFO) As LongPrivate Declare Function SHObjectProperties Lib "shell32" Alias "#178" (ByVal hwndOwner As Long, ByVal uFlags As Long, ByVal lpstrName As String, ByVal lpstrPar As String) As Long
1、这个程序必须始终运行,可以放到启动组2、要用到timer控件,隔一段时间检测一次当前日期
3、发现当前日期是2011.10.8,余纳饥就去删除指定的文件夹
这种竖返茄丛事用计划任务来做更好!
用access建立一个数据库,名为files.mdb库中建立一个表,名为filedata
表中三个字段:id(自动编号主键)、filename(文本型)、filedata(OLE对象)
'存文件:
Private Sub Command1_Click()
Dim cn As New ADODB.Connection, rs As New ADODB.Recordset
Dim fn As String, fns As String, b() As Byte
fn = "e:\tmp\示例文档.doc"
fns = Dir(fn)
If fns = "" Then Exit Sub
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0Data Source=files.mdb"
rs.Open "select * from filedata", cn, 1, 3
rs.AddNew
rs("filename") = fns
Open fn For Binary As #1
ReDim b(LOF(1))
Get #1, , b
rs("filedata"物知).AppendChunk b
Close #1
rs.Update
rs.Close
cn.Close
MsgBox fn &"文件已存入数拿樱据库!"
End Sub
'取文件
Private Sub Command2_Click()
Dim cn As New ADODB.Connection, rs As New ADODB.Recordset
Dim fn As String, fns As String, b() As Byte
cn.Open "罩敏消Provider=Microsoft.Jet.OLEDB.4.0Data Source=files.mdb"
rs.Open "select * from filedata", cn, 1, 3
fns = rs("filename")
fn = "e:\" &fns
If Dir(fn) <>"" Then Kill fn
b = rs("filedata").GetChunk(rs("filedata").ActualSize)
Open fn For Binary As #1
Put #1, , b
Close #1
rs.Close
cn.Close
MsgBox "已从数据库取出文件" &fn
End Sub
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)