请教用vb6.0调用API操作文件

gooore 2009-06-26 03:06:10
比如复制,移动,更改文件名,新建文件夹等等

不胜感激
...全文
70 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
一笑拔剑 2009-06-27
  • 打赏
  • 举报
回复
这都不清楚

基础最好再学学
SYSSZ 2009-06-27
  • 打赏
  • 举报
回复
CreateDirectory----函数名就是创建目录的意思;
CreateDirectoryA---别名也是创建目录的意思;
的意思;
你调用的创建目录的函数,创建目录的函数的作用当然是创建目录了.
至于这些常量代表什么,看一下资料就知道了:
CreateFile

VB声明
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 Long
说明
这是一个全功能的例程,可打开和创建文件、管道、邮槽、通信服务、设备以及控制台
返回值
Long,如执行成功,则返回文件句柄。INVALID_HANDLE_VALUE表示出错,会设置GetLastError。即使函数成功,但若文件存在,且指定了CREATE_ALWAYS 或 OPEN_ALWAYS,GetLastError也会设为ERROR_ALREADY_EXISTS
参数表
参数 类型及说明
lpFileName String,要打开的文件的名字
dwDesiredAccess Long,如果为 GENERIC_READ 表示允许对设备进行读访问;如果为 GENERIC_WRITE 表示允许对设备进行写访问(可组合使用);如果为零,表示只允许获取与一个设备有关的信息
dwShareMode Long,零表示不共享; FILE_SHARE_READ 和/或 FILE_SHARE_WRITE 表示允许对文件进行共享访问
lpSecurityAttributes SECURITY_ATTRIBUTES,指向一个SECURITY_ATTRIBUTES结构的指针,定义了文件的安全特性(如果操作系统支持的话)
dwCreationDisposition Long,下述常数之一:
CREATE_NEW 创建文件;如文件存在则会出错
CREATE_ALWAYS 创建文件,会改写前一个文件
OPEN_EXISTING 文件必须已经存在。由设备提出要求
OPEN_ALWAYS 如文件不存在则创建它
TRUNCATE_EXISTING 讲现有文件缩短为零长度
dwFlagsAndAttributes Long,一个或多个下述常数
FILE_ATTRIBUTE_ARCHIVE 标记归档属性
FILE_ATTRIBUTE_COMPRESSED 将文件标记为已压缩,或者标记为文件在目录中的默认压缩方式
FILE_ATTRIBUTE_NORMAL 默认属性
FILE_ATTRIBUTE_HIDDEN 隐藏文件或目录
FILE_ATTRIBUTE_READONLY 文件为只读
FILE_ATTRIBUTE_SYSTEM 文件为系统文件
FILE_FLAG_WRITE_THROUGH 操作系统不得推迟对文件的写操作
FILE_FLAG_OVERLAPPED 允许对文件进行重叠操作
FILE_FLAG_NO_BUFFERING 禁止对文件进行缓冲处理。文件只能写入磁盘卷的扇区块
FILE_FLAG_RANDOM_ACCESS 针对随机访问对文件缓冲进行优化
FILE_FLAG_SEQUENTIAL_SCAN 针对连续访问对文件缓冲进行优化
FILE_FLAG_DELETE_ON_CLOSE 关闭了上一次打开的句柄后,将文件删除。特别适合临时文件
也可在Windows NT下组合使用下述常数标记:
SECURITY_ANONYMOUS, SECURITY_IDENTIFICATION, SECURITY_IMPERSONATION, SECURITY_DELEGATION, SECURITY_CONTEXT_TRACKING, SECURITY_EFFECTIVE_ONLY
hTemplateFile Long,如果不为零,则指定一个文件句柄。新文件将从这个文件中复制扩展属性
注解
打开一个通信端口时(如COM1),无论如何都要设置成 OPEN_EXISTING
这个函数代替了lOpen 和 lCreate函数,应该是我们的首选



gooore 2009-06-27
  • 打赏
  • 举报
回复
困惑,如果kernel32.dll里面有很多函数,那么为什么这么定义就执行特定的其中某一个呢?就像
Private Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpPathName As String, ByVal lpSecurityAttributes As Long) As Long
系统怎么知道要创建一个目录,名字随便取啊。

再就是
Private Const GENERIC_ALL = &H10000000
Private Const CREATE_ALWAYS = 2
Private Const FILE_ATTRIBUTE_NORMAL = &H80
这些常量代表什么意思?

不胜感激
xrongzhen 2009-06-26
  • 打赏
  • 举报
回复
没必要非得用API,可以用FSO
xrongzhen 2009-06-26
  • 打赏
  • 举报
回复
代码事例都有了,还有啥需要解释的。还看不明白的话,至少可以百度一下。。。
孤独剑_LPZ 2009-06-26
  • 打赏
  • 举报
回复
1楼正解,注释已经很清楚了,还要什么注释
gooore 2009-06-26
  • 打赏
  • 举报
回复
请教能不能帮忙解释一下。

不胜感激
lyserver 2009-06-26
  • 打赏
  • 举报
回复

Option Explicit

Private Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpPathName As String, ByVal lpSecurityAttributes As Long) As Long
Private Declare Function MoveFile Lib "kernel32" Alias "MoveFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String) As Long
Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Const GENERIC_ALL = &H10000000
Private Const CREATE_ALWAYS = 2
Private Const FILE_ATTRIBUTE_NORMAL = &H80
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Sub main()
Dim hFile As Long

'创建文件夹
CreateDirectory "c:\lyserver", 0
'创建文件
hFile = CreateFile("c:\lyserver\temp.old", GENERIC_ALL, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0)
CloseHandle hFile
'复制文件
CopyFile "c:\lyserver\temp.old", "c:\lyserver\temp.bak", 0
'重命名文件
MoveFile "c:\lyserver\temp.old", "c:\lyserver\temp.new"
'移动文件
MoveFile "c:\lyserver\temp.new", "c:\temp.new"
End Sub

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧