文件管理

 1 //多字符集
 2 
 3 #include "stdafx.h"
 4 #include <Windows.h>
 5 #include <iostream>
 6 
 7 using namespace std;
 8 
 9 BOOL MakeSureDirectoryPathExists(char* DirectoryFullPath);
10 
11 int main()
12 {
13     char* DirectoryFullPath = "E:\这个是我们自己创建的多层目录\DemoSucess\";//要在最后加上那个双斜杠,否则无法创建最后一层
14     MakeSureDirectoryPathExists(DirectoryFullPath);
15     return 0;
16 }
17 
18 BOOL MakeSureDirectoryPathExists(char* DirectoryFullPath)
19 {
20     char* Travel     = NULL;
21     char* BufferData = NULL;
22     DWORD DirectoryAttributes;
23     
24     BufferData = (char*)malloc(sizeof(char)*(strlen(DirectoryFullPath) + 1));
25 
26     if (BufferData == NULL)
27     {
28         return FALSE;
29     }
30 
31     strcpy(BufferData, DirectoryFullPath);
32 
33     Travel = BufferData;
34 
35 
36     if (*(Travel + 1) == ':')
37     {
38         Travel++;
39         Travel++;
40         if (*Travel && (*Travel == '\'))
41         {
42             Travel++;
43         }
44     }
45     while (*Travel)           //D:Hello\WorldShit
46     {
47         if (*Travel == '\')
48         {
49             *Travel = '';
50             DirectoryAttributes = GetFileAttributes(BufferData);   //查看是否是否目录  目录存在吗//这里注意单双字使用多字符集
51             if (DirectoryAttributes == 0xffffffff)
52             {
53                 if (!CreateDirectory(BufferData, NULL))
54                 {
55                     if (GetLastError() != ERROR_ALREADY_EXISTS)
56                     {
57                         free(BufferData);
58                         return FALSE;
59                     }
60                 }
61             }
62             else
63             {
64                 if ((DirectoryAttributes & FILE_ATTRIBUTE_DIRECTORY) != FILE_ATTRIBUTE_DIRECTORY)
65                 {
66                     free(BufferData);
67                     BufferData = NULL;
68                     return FALSE;
69                 }
70             }
71 
72             *Travel = '\';
73         }
74 
75         Travel = CharNext(Travel);
76     }
77     
78     cout << "创建多层目录成功!" << endl;
79     return TRUE;
80 }
原文地址:https://www.cnblogs.com/1228073191Blog/p/7531318.html