vc中关于文件的操作

来源:互联网 发布:微信淘客什么软件好 编辑:程序博客网 时间:2024/05/19 13:55

如何创建文件?

1. 文件输出流ofstream对象,当文件不存在时可以自动创建文件。

2. 用CFile对象打开一个文件,如果文件不存在也可以自动创建文件。

3. 利用Windows API中的CreateFile函数。示例:

CreateFile(szFilePath, // 要打开的文件名

GENERIC_READ, // 以读方式打开

FILE_SHARE_READ, // 可共享读

NULL, // 默认安全设置

OPEN_EXISTING, // 只打开已经存在的文件

FILE_ATTRIBUTE_NORMAL, // 常规文件属性

NULL); // 无模板

如何创建目录?

1. 利用Windows API中的CreateDirectory函数。示例:CreateDirectory(szDirPath, NULL);

2. 在根目录下创建文件夹:MakeSureDirectoryPathExists函数。

include <imagehlp.h>

#pragma comment(lib,"imagehlp.lib")

BOOL MakeSureDirectoryPathExists(

  PCSTR DirPath  

);

示例:MakeSureDirectoryPathExists("c:\\1\\2\\"); // 一下子创建了文件夹1和它的子文件夹2

如何删除文件?

1. 利用Windows API中的DeleteFile函数,参数是要删除的文件路径,返回BOOL类型表示是否删除成功。

2. 利用system函数,调用dos中的del命令。示例:system("del c:\\1.txt");

3. 利用CFile::Remove静态函数。示例:CFile::Remove("E:\\1.txt");

4. 利用 SHFileOperation函数。网上说可以删除目录,但我试了一下没有成功。

如何删除目录?

1. 利用RemoveDirectory函数,传递文件夹路径作为参数。注意,此函数只能删除空文件夹。如果文件夹非空,本函数会返回FALSE。

2. 自己编写DeleteDirectory函数(Windows API中并无此函数),思路是利用CFileFind类的对象遍历文件夹下的文件和目录,将它们逐一删除,剩下空目录最后删除。删除子文件夹可以用递归的方法。

3. 利用system函数,调用dos中的rd命令,这种方法也只能删除空目录。

如何复制文件?

1. 利用Windows API中的CopyFile函数。

2. 利用system函数调用dos中的copy命令。

3. 利用 SHFileOperation函数。

如何移动文件?

1. 调用MoveFile函数。

2. 利用system函数调用dos中的move命令。

3. 利用 SHFileOperation函数。

如何重命名文件/目录?

1. 利用CFile::Rename静态函数。

2. 利用 SHFileOperation函数。

如何读文件?

1. 调用ReadFile函数。

2. 调用CFile对象的Read函数。

3. 利用文件输入流ifstream对象。

如何写文件?

1. 调用WriteFile函数。

2. 调用CFile对象的Write函数。

3. 利用文件输出流ofstream对象。

如何获取文件大小?

1. 利用GetFileSize或GetFileSizeEx函数。

2. 利用CFile对象的GetLength函数。

3. 利用CFileFind对象的GetLength函数。

如何获取进程当前目录?

利用GetCurrentDirectory函数。

如何设置进程当前目录?

利用SetCurrentDirectory函数。

如何获取模块所在路径?

利用GetModuleFileName函数,第一个参数为NULL则获取当前模块路径,非NULL可以获取指定模块的路径。

如何查找文件、遍历文件?

1. 利用FindFirstFile和FindNextFile两个API函数。

2. 利用CFileFind对象中的FindFile和FindNextFile函数。

如何获取文件/目录的属性?

1. 利用GetFileAttributes或GetFileAttributesEx函数。

2. 利用CFile对象的GetStatus等函数。

3. 利用CFileFind对象的一系列函数。

如何设置文件/目录属性?

1. 利用SetFileAttributes函数。

2. 利用CFile对象的SetStatus函数。

如何判断文件或文件夹是否存在?

1. 判断文件夹是否存在:BOOL PathIsDirectory( LPCTSTR pszPath);需要包含shlwapi.h。

2. 判断文件或文件夹是否存在:BOOL PathFileExists(LPCTSTR pszPath);

   需要#include <Shlwapi.h>

3. _access函数,需要 #include  <io.h>

int _access( 

   const char *path, 

   int mode 

);

int _waccess( 

   const wchar_t *path, 

   int mode 

);

path

File or directory path. 

mode

Read/write attribute. 

mode value

Checks file for

00

Existence only

02

Write-only

04

Read-only

06

Read and write

  #include <io.h>   

  #include <stdio.h>   

  #include <stdlib.h>    

  void main( void )   

  {   

        /*   Check   for   existence   */   

        if(   (_access(   "ACCESS.C",   0   ))   !=   -1   )   

        {   

              printf(   "File   ACCESS.C   exists\n"   );   

              /*   Check   for   write   permission   */   

              if(   (_access(   "ACCESS.C",   2   ))   !=   -1   )   

                    printf(   "File   ACCESS.C   has   write   permission\n"   );   

        }   

  }   

4. 通过FindFirstFile函数实现。

BOOL  IsFileExists(LPCTSTR   lpszFileName)   

  {   

         WIN32_FIND_DATA   wfd;   

         BOOL   bRet;   

         HANDLE   hFind;   

         hFind   =   FindFirstFile(lpszFileName,   &wfd);   

         bRet   =   hFind   !=   INVALID_HANDLE_VALUE;   

         FindClose(hFind);   

         return   bRet;   

  }