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;
}