1
using System;
2
using System.Drawing;
3
using System.Collections;
4
using System.ComponentModel;
5
using System.Windows.Forms;
6
using System.Data;
7
using System.IO;
8
9
namespace 删除空文件夹
10
{
11
/// <summary>
12
/// Form1 的摘要说明。
13
/// </summary>
14
public class Form1 : System.Windows.Forms.Form
15
{
16
private System.Windows.Forms.Button button1;
17
private System.Windows.Forms.RichTextBox richTextBox1;
18
/// <summary>
19
/// 必需的设计器变量。
20
/// </summary>
21
private System.ComponentModel.Container components = null;
22
23
public Form1()
24
{
25
//
26
// Windows 窗体设计器支持所必需的
27
//
28
InitializeComponent();
29
30
//
31
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
32
//
33
}
34
35
/// <summary>
36
/// 清理所有正在使用的资源。
37
/// </summary>
38
protected override void Dispose( bool disposing )
39
{
40
if( disposing )
41
{
42
if (components != null)
43
{
44
components.Dispose();
45
}
46
}
47
base.Dispose( disposing );
48
}
49
50
Windows 窗体设计器生成的代码
94
95
/// <summary>
96
/// 应用程序的主入口点。
97
/// </summary>
98
[STAThread]
99
static void Main()
100
{
101
Application.Run(new Form1());
102
}
103
//遍历当前文件夹下的空文件夹(包括它的下一级文件夹)
104
private void SearchDirectoryEmptyFolder(string targetDirectory )
105
{
106
if (Directory.Exists(targetDirectory))
107
{
108
DirectoryInfo di = new DirectoryInfo(targetDirectory);
109
if( DirSize(di)== 0)
110
{
111
112
// ' Empty folder
113
w1++;
114
this.richTextBox1.Text +=w1.ToString()+ ("Folder " + targetDirectory +" is empty\n") ;
115
}
116
else
117
{
118
//' Recurse subdirectories of this directory
119
//string subdirectory ="";
120
string[] subdirectoryEntries = Directory.GetDirectories(targetDirectory) ;
121
foreach( string subdirectory in subdirectoryEntries )
122
{
123
//this.richTextBox1.Text +=("Folder is " + subdirectory+"\n") ;
124
SearchDirectoryEmptyFolder(subdirectory) ;
125
}
126
}
127
}
128
}
129
//遍历当前文件夹下的所有文件信息(包括它的下一级文件夹)
130
public static void DirSearch(DirectoryInfo d)
131
{
132
//get the current directory files information
133
FileInfo[] files = d.GetFiles();
134
Console.WriteLine("Total number of txt files:{0}",files.Length);
135
foreach(FileInfo f in files)
136
{
137
Console.WriteLine("Name is : {0}", f.Name);
138
Console.WriteLine("Length of the file is : {0}", f.Length);
139
Console.WriteLine("Creation time is : {0}", f.CreationTime);
140
Console.WriteLine("the path of the file: {0}",f.FullName);
141
Console.WriteLine("Attributes of the file are : {0}",
142
f.Attributes.ToString());
143
}
144
145
// recursion transfer get the next directory information
146
DirectoryInfo[] dis = d.GetDirectories();
147
foreach (DirectoryInfo di in dis)
148
{
149
DirSearch(di);
150
}
151
}
152
153
154
int w1=0;
155
//遍历当前文件夹下的所有文件夹名(包括它的下一级文件夹))
156
private void SearchDirectoryFolder(string targetDirectory )
157
{
158
if (Directory.Exists(targetDirectory))
159
{
160
if( Directory.GetFileSystemEntries(targetDirectory).Length == 0)
161
{
162
//Empty folder
163
w1++;
164
this.richTextBox1.Text +=w1.ToString()+ ("Folder " + targetDirectory +" is empty\n") ;
165
}
166
else
167
{
168
//' Recurse subdirectories of this directory
169
string[] subdirectoryEntries = Directory.GetDirectories(targetDirectory) ;
170
foreach( string subdirectory in subdirectoryEntries )
171
{
172
//this.richTextBox1.Text +=("Folder is " + subdirectory+"\n") ;
173
SearchDirectoryFolder(subdirectory) ;
174
}
175
}
176
}
177
}
178
179
private void button1_Click(object sender, System.EventArgs e)
180
{
181
this.richTextBox1.Text ="";
182
183
//SearchDirectoryFolder(@"c:\CarArchives");
184
//DirectoryInfo di = new DirectoryInfo(@"c:\CarArchives");
185
//long i=DirSize(di)/1024;
186
//this.richTextBox1.Text = (i.ToString()+"KB" ) ;
187
//SearchDirectoryEmptyFolder(@"c:\CarArchives");
188
//ProcessDirectory(@"c:\CarArchives");
189
PrintFileSystemEntries(@"c:\CarArchives\2005");
190
}
191
192
193
194
//计算当前文件夹的大小(包括它的下一级文件夹)
195
public long DirSize(DirectoryInfo d)
196
{
197
long Size = 0;
198
// Add file sizes.
199
FileInfo[] fis = d.GetFiles();
200
foreach (FileInfo fi in fis)
201
{
202
Size +=fi.Length; ;
203
}
204
// Add subdirectory sizes.
205
DirectoryInfo[] dis = d.GetDirectories();
206
foreach (DirectoryInfo di in dis)
207
{
208
Size +=DirSize(di); ;
209
}
210
return(Size);
211
}
212
213
//获取当前文件夹中的所有文件和文件夹(不包括它的下一级目录)
214
void PrintFileSystemEntries(string path)
215
{
216
217
try
218
{
219
// Obtain the file system entries in the directory path.
220
string[] directoryEntries =
221
System.IO.Directory.GetFileSystemEntries(path);
222
223
foreach (string str in directoryEntries)
224
{
225
//System.Console.WriteLine(str);
226
this.richTextBox1.Text+=str+"\n" ;
227
}
228
}
229
catch (ArgumentNullException)
230
{
231
System.Console.WriteLine("Path is a null reference.");
232
}
233
catch (System.Security.SecurityException)
234
{
235
System.Console.WriteLine("The caller does not have the " +
236
"required permission.");
237
}
238
catch (ArgumentException)
239
{
240
System.Console.WriteLine("Path is an empty string, " +
241
"contains only white spaces, " +
242
"or contains invalid characters.");
243
}
244
catch (System.IO.DirectoryNotFoundException)
245
{
246
System.Console.WriteLine("The path encapsulated in the " +
247
"Directory object does not exist.");
248
}
249
}
250
251
//获取当前文件夹下的所有文件和文件夹(不包括它的下一级目录)
252
public void ProcessDirectory(string targetDirectory)
253
{
254
// Process the list of files found in the directory.
255
string [] fileEntries = Directory.GetFiles(targetDirectory);
256
foreach(string fileName in fileEntries)
257
this.richTextBox1.Text +=fileName+"\n";
258
// Recurse into subdirectories of this directory.
259
string [] subdirectoryEntries = Directory.GetDirectories(targetDirectory);
260
foreach(string subdirectory in subdirectoryEntries)
261
{
262
this.richTextBox1.Text += subdirectory+"\n"+"**********************************\n\n" ;
263
ProcessDirectory(subdirectory);
264
}
265
266
267
}
268
269
}
270
271
272
}
273

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

42

43

44

45

46

47

48

49

50

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273
