文章目录

  • CreateDirectory
  • 函数功能
  • 函数声明
  • 第一个参数(第一种情况绝对路径)
  • 第一个参数(第二种情况当前目录)
  • 第二个参数
  • 返回值
  • 注意:
  • 代码实现
  • 绝对路径
  • 当前目录
  • GetCurrentDirectory
  • 函数功能
  • 函数声明
  • 第一个参数
  • 第二个参数
  • 返回值
  • 代码实现
  • SetCurrentDirectory
  • 函数功能
  • 函数声明
  • 第一个参数:
  • 返回值:
  • 注意:
  • 代码实现
  • `CreateDirectory`和`SetCurrentDirectory`相结合使用(打了一套组合拳):实现代码下:

CreateDirectory

函数功能

创建一个新目录

函数声明

BOOL CreateDirectory(LPCTSTR lpPathName,LPSECURITY_ATTRIBUTES lpSecurityAttributes);

第一个参数(第一种情况绝对路径)

lpNewDirectory String,新目录的名字。举例:LPCSTR str = "c:\\TEST"

第一个参数(第二种情况当前目录)

lpNewDirectory String,新目录的名字。举例:LPCSTR str = "TEST"

第二个参数

lpSecurityAttributes SECURITY_ATTRIBUTES,这个结构定义了目录的安全特性——如果操作系统支持的话,安全属性,一般设置为NULL即可

返回值

Long,如果正确创建,返回值为1,如果没有正常创建文件夹,则返回0。会设置GetLastError

注意:

特别的:该函数每次调用时都只能创建一级文件夹,即文件夹中不能再包含子文件夹

当希望创建含有子文件夹的文件夹时,可以先使用该函数创建一级文件夹,然后再使用该函数在一级文件夹下创建子文件夹。如:

希望创建:d:\\TEST\\temp

则:

     LPCSTR str = "c:\\TEST";CreateDirectory(str, NULL);LPCSTR std = "c:\\TEST\\temp";CreateDirectory(std, NULL);

代码实现

绝对路径

 LPTSTR szDirPath = LPTSTR("c:\\dog");if (!CreateDirectory(szDirPath, NULL)) {LPCSTR a = "创建失败";LPCSTR  b = "再接再厉";MessageBox(NULL,a,b,MB_OK);return 0;}LPCSTR a = "创建成功";LPCSTR  b = "厉害";MessageBox(NULL, a, b, MB_OK);LPCSTR str = "c:\\TEST";CreateDirectory(str, NULL);LPCSTR std = "c:\\TEST\\temp";CreateDirectory(std, NULL);

当前目录

  LPCSTR str1 = "TEST";CreateDirectory(str1, NULL);if (!CreateDirectory(szDirPath, NULL)) {LPCSTR a = "创建失败";LPCSTR  b = "再接再厉";MessageBox(NULL, a, b, MB_OK);return 0;}LPCSTR a = "在当前目录创建成功";LPCSTR  b = "厉害";MessageBox(NULL, a, b, MB_OK);




GetCurrentDirectory

函数功能

在一个缓冲区中装载当前目录

函数声明

因为此时我是用的是多字节字符集,所以 GetCurrentDirectory自动转变为 GetCurrentDirectoryA

GetCurrentDirectoryA(_In_ DWORD nBufferLength,_Out_writes_to_opt_(nBufferLength,return + 1) LPSTR lpBuffer);

第一个参数

nBufferLength LonglpBuffer缓冲区的长度

第二个参数

lpBuffer String,指定一个预定义字串,用于装载当前目录

返回值

Long,装载到lpBuffer的字节数。如nBufferLength的长度不够,不足以容纳目录,则返回值是必要的缓冲区长度(要求至少这个长度),其中包括空中止字符。零表示失败。会设置GetLastError

代码实现

  TCHAR szCurrentDirectory[MAX_PATH];DWORD  dwCurDirPathlen;dwCurDirPathlen=GetCurrentDirectory(MAX_PATH, szCurrentDirectory);printf("%d", dwCurDirPathlen);if (dwCurDirPathlen == 0) {LPCSTR a = "获取当前目录失败";LPCSTR  b = "再接再厉";MessageBox(NULL, a, b, MB_OK);return 0;}LPCSTR a = "获取当前目录成功";LPCSTR  b = "厉害";MessageBox(NULL, szCurrentDirectory, b, MB_OK);

SetCurrentDirectory

函数功能

在开发软件里,常常碰到要读取当前目录下的配置参数文件,或者打开当前目录下别的程序来运行,那么就需要获取当前进程的目录位置,这就需要使用函数GetCurrentDirectory获取当前进程所有在的目录。同时也可以使用setcurrentdirectory函数来改变进程的当前目录。

函数声明

SetCurrentDirectoryA(_In_ LPCSTR lpPathName);

第一个参数:

LPCTSTR lpPathName程序的目录设置到地址

返回值:

此函数的返回值类型为Long,非零表示成功,零表示失败。会设置GetLastError

注意:

应用程序终止时,工作目录被还原为其原始位置(从其开始进程的目录)。

允许 path 参数指定相对或绝对路径信息。 相对路径信息被解释为相对于当前工作目录。 若要获取当前工作目录,请参见 GetCurrentDirectory

尾随空格从 path 参数的结尾。CONFIG 目录中的已取消。

path 参数不区分大小写。

如果您要将目录设置为装有可移动媒体的驱动器(例如对于软盘驱动器,为“A:”,对于 CD-ROM 驱动器,为“E:”),则可以通过使用 IsReady 属性确定该驱动器是否已就绪。

代码实现

    LPCSTR a = "c:\\";if (!SetCurrentDirectory(a)) {LPCSTR a = "设置当前目录失败";LPCSTR  b = "再接再厉";MessageBox(NULL, a, b, MB_OK);}LPCSTR a1 = "设置当前目录成功";LPCSTR  b = "厉害";MessageBox(NULL, a1, b, MB_OK);

CreateDirectorySetCurrentDirectory相结合使用(打了一套组合拳):实现代码下:

  LPCSTR CurrentDirectory = "c:\\";if (!SetCurrentDirectory(CurrentDirectory)) {LPCSTR a = "设置当前目录失败";LPCSTR  b = "再接再厉";MessageBox(NULL, a, b, MB_OK);}LPCSTR CurrentDirectory1 = "设置当前目录成功";LPCSTR  CurrentDirectoryTable = "厉害";MessageBox(NULL, CurrentDirectory1, CurrentDirectoryTable, MB_OK);LPCSTR str1 = "TEST";if (!CreateDirectory(str1, NULL)) {LPCSTR a = "创建失败";LPCSTR  b = "再接再厉";MessageBox(NULL, a, b, MB_OK);return 0;}LPCSTR createDirectory = "在当前目录创建成功";LPCSTR  b = "厉害";MessageBox(NULL, createDirectory, b, MB_OK);


备注:
2021年坚持学写博客第10天(学习两个windows API) 寻梦SS

明日目标:
windows核心编程API函数

CreateDirectory GetCurrentDirectory 和SetCurrentDirectory相关推荐

  1. GetCurrentDirectory和SetCurrentDirectory函数

    转自:http://blog.csdn.net/wishfly/article/details/2906187 在开发软件里,常常碰到要读取当前目录下的配置参数文件,或者打开当前目录下别的程序来运行, ...

  2. 路径,文件,目录,I/O常见操作汇总

    摘要:    文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案 ...

  3. 《精通Windows API-函数、接口、编程实例》——第4章文件系统

    第4章文件系统 4.2 磁盘和驱动器管理 文件系统的基本概念: 包括磁盘分区,卷,目录,文件对象,文件句柄,文件映射 1.磁盘分区: 物理磁盘,逻辑磁盘 2.卷: 也称逻辑驱动器,是NTFS,FAT3 ...

  4. C#文件目录IO常见操作汇总

    http://www.kuaipan.cn/file/id_14185671388311824.html http://www.kuaipan.cn/file/id_14185671388311942 ...

  5. Win32汇编——文件操作

    一.创建和读写文件 打开.创建文件:CreateFile  (文件名需全路径) 关闭: CloseHandle 调整文件指针: SetFilePointer 无GetFilePointer函数,可通过 ...

  6. Unity中用递归删除空文件夹和文件夹下面的子文件,meta文件保留和IO的一些操作总结

    /*----------------------------------------------------------------Created by 王银文件名: FilesTools创建时间: ...

  7. Unity3D心得分享

    本篇文章的内容以各种tips为主,不间断更新 2019/05/10 最近更新: 使用Instantiate初始化参数去实例对象 Unity DEMO学习 ======================= ...

  8. C# 获取当前路径方法

    //获取包含清单的已加载文件的路径或 UNC 位置. public static string sApplicationPath = Assembly.GetExecutingAssembly ( ) ...

  9. C#路径/文件/目录/I/O常见操作汇总(一)

    文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题, 尽量提供一些解决方案,即使没有你想要的答案,也希望能提 ...

最新文章

  1. 启动springboot报错Error creating bean with name 'dataSource' defined in class path resource
  2. AS3 CookBook学习整理(十七)
  3. CUDA性能优化----线程配置
  4. 笔记本安装win7和arch linux双系统+xfce4桌面
  5. LeetCode Online Judge 题目C# 练习 - Search in Rotated Sorted Array II
  6. x86保护模式 任务状态段和控制门
  7. Learun,已开源,一个.net web快速开放工具
  8. 微信小程序的所有scene场景值 2020-10-21
  9. matlab横纵坐标程序,matlab横纵坐标标注
  10. GSM/GPRS之一-GSM基础知识
  11. selenium元素模糊定位xpath contains、starts-with和ends-with
  12. python 批量处理图片
  13. [SpringBoot]使用token 短信验证码 Redis的功能实现基本的登陆注册操作(含Redis token 验证码如何配置)
  14. Android概述与发展
  15. 一口气说出前后端 10 种 鉴权方案!!!
  16. 小程序如何转App?
  17. [附源码]计算机毕业设计Python防疫物资捐赠(程序+源码+LW文档)
  18. GPS北斗共视授时中的多径效应分析
  19. 学计算机手机必备软件,精选推荐:手机电脑里的11类值得分享的“神器”,囊括你工作学习以及生活的方方面面...
  20. 天龙八部TLBB系列 - 如何让宠物学习十二满技能

热门文章

  1. 成功解决AttributeError: module ‘seaborn‘ has no attribute ‘lvplot‘
  2. 成功解决ModuleNotFoundError: No module named ‘torch._C‘
  3. ML之LSOLS:LSOLS算法的简介、论文、算法的改进(最佳子集选择OFSS法、前向逐步回归FSR法)、代码实现等详细攻略
  4. Matlab:利用Matlab实现布朗运动模拟
  5. 自动化机器学习(三)神经网络架构搜索综述(NAS)简述
  6. Jupyter notebook 编写scala与spark
  7. Codeforces - 662A 思路巧妙的异或
  8. Spring基于Setter函数的依赖注入(DI)
  9. 如何控制并发和控制死锁(内含pb的处理要点)
  10. 指针01 - 零基础入门学习C语言41