zoukankan      html  css  js  c++  java
  • windows中操作文件和目录的函数

    1、文件操作函数

          CreateFile();//创建或打开文件
          ReadFile();//从文件读
          WriteFile();//向文件写
          SetFilePointer();//设置文件指针
          CopyFile();//复制文件
          MoveFile();//移动或重命名文件
          DeleteFile();//删除文件

    2、文件属性函数

          GetFileSize();//获取文件大小
          GetFileTime();//获取文件或目录的时间信息,如创建时间、最后修改时间、最后访问时间
          SetFileTime();//设置文件或目录的时间信息
          GetFileAttributesEx();//获取文件属性
          SetFileAttributes();//设置文件属性

    3、文件的遍历和查找

          FindFirstFile();//查找第一个文件
          FindNextFile();//查找下一个文件
          FindClose();//关闭查找

    4、目录操作函数

          CreateDirectory();//创建目录,只能创建一层目录
          RemoveDirectory();//删除一个空目录

    5、判断文件或目录是否存在    

           以下转载自:http://liuzhigong.blog.163.com/blog/static/178272375201171594820785/

           C中函数access()可以用来判断文件或文件夹是否存在。

           函数原型: int access(const char *filename, int mode);

           所属头文件:#include <io.h>

           filename:可以填写文件夹路径或者文件路径

           mode:0 (F_OK) 只判断是否存在

                         2 (R_OK) 判断写入权限

                         4 (W_OK) 判断读取权限

                         6 (X_OK) 判断执行权限

           用于判断文件夹是否存在的时候,mode取0,判断文件是否存在的时候,mode可以取0、2、4、6。 若存在或者具有权限,返回值为0;不存在或者无权限,返回值为-1。

           错误代码

           EACCESS 参数pathname 所指定的文件不符合所要求测试的权限。

           EROFS 欲测试写入权限的文件存在于只读文件系统内。

           EFAULT 参数pathname指针超出可存取内存空间。

           EINVAL 参数mode 不正确。

           ENAMETOOLONG 参数pathname太长。

           ENOTDIR 参数pathname为一目录。

           ENOMEM 核心内存不足

           ELOOP 参数pathname有过多符号连接问题。

           EIO I/O 存取错误。

           特别提醒:使用access()作用户认证方面的判断要特别小心,例如在access()后再做open()的空文件可能会造成系统安全上的问题。

           在windows平台下还可以用API函数FindFirstFile()来判断文件或文件夹是否存在。

    6、获取指定的目录

           GetCurrentDirectory();//获得当前目录
           SetCurrentDirectory();//设置当前目录
           GetSystemDirectory();//获得Windows系统目录
           GetWindowsDirectory()//获得Windows目录
           GetTempPath();//获取Windows临时文件目录

           GetFullPathName()//获取指定文件的全路径
           SHGetSpecialFolderLocation()函数可以获取Windows桌面目录、启动目录、我的文档目录等

           第一个参数为“所有者窗口”,调用这个函数的时候可能出现对话框或消息框。

           第二个参数是一个整数id,决定哪个目录是待查找目录,它的取值可能是

           CSIDL_BITBUCKET 回收站  
           CSIDL_CONTROLS  控制面板
           CSIDL_DESKTOP   Windows桌面Desktop
           CSIDL_DRIVES    我的电脑
           CSIDL_FONTS     字体目录
           CSIDL_NETHOOD   网上邻居
           CSIDL_NETWORK   网上邻居虚拟目录
           CSIDL_PERSONAL  我的文档
           CSIDL_PRINTERS  打印机
           CSIDL_PROGRAMS  程序组
           CSIDL_RECENT    最近打开文档
           CSIDL_SENDTO    发送到"菜单项"
           CSIDL_STARTMENU 任务条启动菜单项
           CSIDL_STARTUP   启动目录
           CSIDL_TEMPLATES 临时文档

           第三个参数为pidl地址. SHGetSpecialFolderLocation把地址写到pidl

    原文地址:http://wenku.baidu.com/link?url=98h1Wqau6ZXFTJQsiH6aS6OIvj0K6mW97_L4bXRDYB9f2YBiUtT7Jyk5yS5Odq0jBw48LdytxFbJqoVXg3jIliG2H8lOZ1eQ04zsBYudWgK

    7、缩写的全路径和不缩写的全路径

    GetLongPathName()将文件全路径转换为不缩写的全路径。

    GetLongShortName()将文件全路径转换为缩写的全路径。

    这两个函数极其重要!!!很多人写程序时不注意这一点——包括我,比如,使用GetModuleFileName获取文件路径,我们一般都将获取到的路径直接拿来用。在99.9%的情况下,我们获取到的是没有缩写的全路径,但是,某些情况下,获取到的却是缩写的,例如,

    C:Prog~1Comm~1aaa~1.exe

    如果这个时候,取进程的名称,将得到aaa~1.exe,很明显,这种结果是我们所不愿意看到的,它会导致很严重的问题,而这种错误又是极其难以查找的。

    所以,个人认为,在获取文件全路径后,都应该调用GetLongPathName,以便保证得到的路径不是缩写形式。

    8、C/C++中文件、目录操作函数

    remove():删除一个文件或目录。

    rename():重命名或移动(如果系统支持的话)一个文件或目录

  • 相关阅读:
    HTTP GET方法与POST方法有什么区别
    uniapp的pages.json之subPackages、preloadRule——分包
    爬虫与Python:(一)网络爬虫概念篇——7.Session和Cookie
    标签<view>文字自动换行
    CSS之flex布局
    爬虫与Python:(一)网络爬虫概念篇——6.HTTP基本原理
    uniapp 之使用分包——起源于微信错误码——800051
    爬虫与Python:(一)网络爬虫概念篇——3.爬虫的基本结构和工作流程
    爬虫与Python:(一)网络爬虫概念篇——4.爬虫策略
    水印解决方案专题
  • 原文地址:https://www.cnblogs.com/phpzhou/p/6050734.html
Copyright © 2011-2022 走看看