写文件自动创建文件夹目录--CStdioFile
1、mfc用CStdioFile写文件时,如果目录不存在,CStdioFile.Open会打开失败,返回值为0。
此时代码应添加if和else,便于调试。否在会出现错误中断等许多麻烦。如下:
if(CStdioFile.Open)
{
写文件;
File.Close();//close语句如果写在if外面会报错。
}
else
//提示打开文件失败;
2、写文件时如果文件目录不存在,可以自动创建目录,例程如下:
//创建mfc对话框工程,将下面的程序添加到dlg.cpp中的OnInitDialog()函数中
// TODO: 在此添加额外的初始化代码
CStdioFile File;//txt文件
CString strFileName,strTemp1;//用于txt存储的文件名
//创建路径
CString m_FilePath;
m_FilePath="C:\\数据\\";
if(!PathIsDirectory(m_FilePath))
CreateDirectory(m_FilePath,NULL);
m_FilePath=m_FilePath+"环境数据2\\";
if(!PathIsDirectory(m_FilePath))
CreateDirectory(m_FilePath,NULL);
m_FilePath=m_FilePath+"2017-01-06\\";
if(!PathIsDirectory(m_FilePath))
CreateDirectory(m_FilePath,NULL);
strFileName=m_FilePath+"tt.txt";
//strFileName="C\数据\环境数据2\2017-01-06tt.txt";//此句可导致弹窗。因为单斜杠\是转义符
if(File.Open(strFileName,CFile::modeCreate|CFile::modeWrite))
{
CString m_strData="wht";
File.WriteString(m_strData);
File.Close();
}
else
{
MessageBox("文件写入失败");//提示代码,此处可考虑非弹窗类型的提示
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
编辑 (opens new window)
上次更新: 2021/10/11, 12:43:58