C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名

原文:C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名

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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
本文也收集了目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加、拷贝、删除、移动文件、创建目录、递归删除文件夹及文件、指定文件夹下面的所有内容copy到目标文件夹下面、指定文件夹下面的所有内容Detele、读取文本文件、获取文件列表、读取日志文件、写入日志文件、创建HTML 文件、CreateDirectory方法的使用.修改文件或文件夹名称等方法使用.....
C#追加文件
    StreamWriter sw = File.AppendText(Server.MapPath(".")+"\\myText.txt");
    sw.WriteLine("追逐理想");
    sw.WriteLine("kzlll");
    sw.WriteLine(".NET笔记");
    sw.Flush();
    sw.Close();
C#拷贝文件
    string OrignFile,NewFile;
    OrignFile = Server.MapPath(".")+"\\myText.txt";
    NewFile = Server.MapPath(".")+"\\myTextCopy.txt";
    File.Copy(OrignFile,NewFile,true);
C#删除文件
    string delFile = Server.MapPath(".")+"\\myTextCopy.txt";
    File.Delete(delFile);
C#移动文件
    string OrignFile,NewFile;
    OrignFile = Server.MapPath(".")+"\\myText.txt";
    NewFile = Server.MapPath(".")+"\\myTextCopy.txt";
    File.Move(OrignFile,NewFile);
C#创建目录
// 创建目录c:\sixAge
    DirectoryInfo d=Directory.CreateDirectory("c:\\sixAge");
// d1指向c:\sixAge\sixAge1
    DirectoryInfo d1=d.CreateSubdirectory("sixAge1");
// d2指向c:\sixAge\sixAge1\sixAge1_1
    DirectoryInfo d2=d1.CreateSubdirectory("sixAge1_1");
// 将当前目录设为c:\sixAge
    Directory.SetCurrentDirectory("c:\\sixAge");
// 创建目录c:\sixAge\sixAge2
    Directory.CreateDirectory("sixAge2");
// 创建目录c:\sixAge\sixAge2\sixAge2_1
    Directory.CreateDirectory("sixAge2\\sixAge2_1");
递归删除文件夹及文件
〈%@PageLanguage=C#%〉 
〈%@Importnamespace="System.IO"%〉 
〈Scriptrunat=server〉 
publicvoidDeleteFolder(stringdir) 
if(Directory.Exists(dir))//如果 
存在这个文件夹删除之 
foreach(stringdinDirectory. 
GetFileSystemEntries(dir)) 
if(File.Exists(d)) 
File.Delete(d);//直接删除其中的文件 
else
DeleteFolder(d);//递归删除子文件夹 
Directory.Delete(dir);//删除已空文件夹 
Response.Write(dir+"文件夹删除成功"); 
else
Response.Write(dir+"该文件夹不存在");//如果 
文件夹不存在则提示 
protectedvoidPage_Load(Object 
sender,EventArgse) 
stringDir="D:\\gbook\\11"
DeleteFolder(Dir);//调用函数删除文件夹 
  
  
//======================================== 
//实现一个静态方法将指定文件夹下面的所有内容copy到目标文件夹下面 
//如果目标文件夹为只读属性就会报错。
//======================================== 
publicstaticvoidCopyDir(stringsrcPath, 
stringaimPath) 
try 
//检查目标目录是否以目录分割字 
符结束如果不是则添加之 
if(aimPath[aimPath.Length-1]!=  Path.DirectorySeparatorChar) 
aimPath+=Path.DirectorySeparatorChar; 
//判断目标目录是否存在如果不存在则新建之 
if(!Directory.Exists(aimPath))Directory.CreateDirectory(aimPath); 
//得到源目录的文件列表, 
该里面是包含文件以及目录路径的一个数组 
//如果你指向copy目标文件下面的文件 
而不包含目录请使用下面的方法 
//string[]fileList=Directory.GetFiles(srcPath); 
string[]fileList=Directory.GetFileSystemEntries(srcPath); 
//遍历所有的文件和目录 
foreach(stringfileinfileList) 
//先当作目录处理如果存在这个 
目录就递归Copy该目录下面的文件 
if(Directory.Exists(file)) 
CopyDir(file,aimPath+Path.GetFileName(file)); 
//否则直接Copy文件 
else
File.Copy(file,aimPath+Path.GetFileName(file),true); 
catch(Exceptione) 
MessageBox.Show(e.ToString()); 
//======================================== 
//实现一个静态方法将指定文件夹下面的所有内容Detele 
//测试的时候要小心操作,删除之后无法恢复。 
//======================================== 
publicstaticvoidDeleteDir(stringaimPath) 
try 
//检查目标目录是否以目录分割字 
符结束如果不是则添加之 
if(aimPath[aimPath.Length-1]!= 
Path.DirectorySeparatorChar) 
aimPath+=Path.DirectorySeparatorChar; 
//得到源目录的文件列表, 
该里面是包含文件以及目录路径的一个数组 
//如果你指向Delete目标文件下面的 
文件而不包含目录请使用下面的方法 
//string[]fileList= 
Directory.GetFiles(aimPath); 
string[]fileList= 
Directory.GetFileSystemEntries(aimPath); 
//遍历所有的文件和目录 
foreach(stringfileinfileList) 
//先当作目录处理如果存在这个 
目录就递归Delete该目录下面的文件 
if(Directory.Exists(file)) 
DeleteDir(aimPath+Path.GetFileName(file)); 
//否则直接Delete文件 
else
File.Delete(aimPath+Path.GetFileName(file)); 
//删除文件夹 
System.IO.Directory.Delete(aimPath,true); 
catch(Exceptione) 
MessageBox.Show(e.ToString()); 
 C# <wbr>文件操作(全部) <wbr>追加、拷贝、删除、移动文件、创建目录 <wbr>修改文件名、文件夹名
需要引用命名空间: 
usingSystem.IO; 
///〈summary〉 
///拷贝文件夹(包括子文件夹)到指定文件夹下, 
源文件夹和目标文件夹均需绝对路径. 
格式:CopyFolder(源文件夹,目标文件夹); 
///〈/summary〉 
///〈paramname="strFromPath"〉〈/param〉 
///〈paramname="strToPath"〉〈/param〉 
  
//---------------------------------------- 
C# <wbr>文件操作(全部) <wbr>追加、拷贝、删除、移动文件、创建目录 <wbr>修改文件名、文件夹名
  
//---------------------------------------- 
publicstaticvoidCopyFolder(stringstrFromPath, 
stringstrToPath) 
//如果源文件夹不存在,则创建 
if(!Directory.Exists(strFromPath)) 
Directory.CreateDirectory(strFromPath); 
  
//取得要拷贝的文件夹名 
stringstrFolderName=strFromPath.Substring( 
strFromPath.LastIndexOf("\")+1,strFromPath. 
Length-strFromPath.LastIndexOf("\")-1); 
  
//如果目标文件夹中没有源文件夹则在目标文件夹中创建源文件夹 
if(!Directory.Exists(strToPath+"\"
+strFolderName)) 
Directory.CreateDirectory(strToPath+"\"
+strFolderName); 
//创建数组保存源文件夹下的文件名 
string[]strFiles=Directory.GetFiles(strFromPath); 
  
//循环拷贝文件 
for(inti=0;i〈strFiles.Length;i++) 
//取得拷贝的文件名,只取文件名,地址截掉。 
stringstrFileName=strFiles[i].Substring( 
strFiles[i].LastIndexOf("\")+1, 
strFiles[i].Length-strFiles[i]. 
LastIndexOf("\")-1); 
//开始拷贝文件,true表示覆盖同名文件 
File.Copy(strFiles[i],strToPath+"\"
+strFolderName+"\"+strFileName,true); 
  
//创建DirectoryInfo实例 
DirectoryInfodirInfo=newDirectoryInfo( 
strFromPath); 
//取得源文件夹下的所有子文件夹名称 
DirectoryInfo[]ZiPath=dirInfo.GetDirectories(); 
for(intj=0;j〈ZiPath.Length;j++) 
//获取所有子文件夹名 
stringstrZiPath=strFromPath+"\"+ 
ZiPath[j].ToString(); 
//把得到的子文件夹当成新的源文件夹, 
从头开始新一轮的拷贝 
CopyFolder(strZiPath,strToPath+"\"+ 
strFolderName); 
  
 
  
  
C#文件操作:读取文本文件
1/// 〈summary〉 
2/// 读取文本文件 
3/// 〈/summary〉 
4private void ReadFromTxtFile() 
5{ 
6    if(filePath.PostedFile. 
FileName != ""
7    { 
8    txtFilePath = 
filePath.PostedFile.FileName; 
9    fileExtName =  
txtFilePath.Substring(txtFilePath. 
LastIndexOf(".")+1,3); 
10 
11   if(fileExtName !="txt" &&  
fileExtName != "TXT"
12   { 
13   Response.Write("请选择文本文件"); 
14   } 
15   else
16   { 
17   StreamReader fileStream =  
new StreamReader(txtFilePath,Encoding.Default); 
18   txtContent.Text = fileStream.ReadToEnd(); 
19   fileStream.Close(); 
20   } 
21   } 
22 }
C#文件操作:获取文件列表
1/// 〈summary〉 
2/// 获取文件列表 
3/// 〈/summary〉 
4private void GetFileList() 
5{ 
string strCurDir,FileName,FileExt; 
7     
8    ///文件大小 
9    long FileSize; 
10     
11    ///最后修改时间; 
12    DateTime FileModify; 
13 
14    ///初始化 
15    if(!IsPostBack) 
16    { 
17  ///初始化时,默认为当前页面所在的目录 
18     strCurDir = Server.MapPath("."); 
19     lblCurDir.Text = strCurDir; 
20     txtCurDir.Text = strCurDir; 
21    } 
22    else
23    { 
24     strCurDir = txtCurDir.Text; 
25     txtCurDir.Text = strCurDir; 
26     lblCurDir.Text = strCurDir; 
27    } 
28    FileInfo fi; 
29    DirectoryInfo dir; 
30    TableCell td; 
31    TableRow tr; 
32    tr = new TableRow(); 
33     
34    ///动态添加单元格内容 
35    td = new TableCell(); 
36    td.Controls.Add(new LiteralControl( 
"文件名")); 
37    tr.Cells.Add(td); 
38    td = new TableCell(); 
39    td.Controls.Add(new LiteralControl( "文件类型")); 
40    tr.Cells.Add(td); 
41    td = new TableCell(); 
42    td.Controls.Add(new LiteralControl( "文件大小")); 
43    tr.Cells.Add(td); 
44    td = new TableCell(); 
45    td.Controls.Add(new LiteralControl( "最后修改时间")); 
46    tr.Cells.Add(td); 
47 
48    tableDirInfo.Rows.Add(tr); 
49     
50    ///针对当前目录建立目录引用对象 
51    DirectoryInfo dirInfo = new DirectoryInfo( txtCurDir.Text); 
52     
53    ///循环判断当前目录下的文件和目录 
54    foreach(FileSystemInfo fsi in dirInfo. 
GetFileSystemInfos()) 
55    { 
56      FileName = ""
57      FileExt = ""
58      FileSize = 0; 
59         
60      ///如果是文件 
61      if(fsi is FileInfo) 
62      { 
63      fi = (FileInfo)fsi; 
64             
65      ///取得文件名 
66      FileName = fi.Name; 
67             
68     ///取得文件的扩展名 
69     FileExt = fi.Extension; 
70             
71    ///取得文件的大小 
72    FileSize = fi.Length; 
73             
74   ///取得文件的最后修改时间 
75   FileModify = fi.LastWriteTime; 
76   } 
77 
78   ///否则是目录 
79   else
80    { 
81    dir = (DirectoryInfo)fsi; 
82             
83     ///取得目录名 
84     FileName = dir.Name; 
85             
86     ///取得目录的最后修改时间 
87     FileModify = dir.LastWriteTime; 
88             
89     ///设置文件的扩展名为"文件夹"
90    FileExt = "文件夹"
91     } 
92         
93    ///动态添加表格内容 
94        tr = new TableRow(); 
95        td = new TableCell(); 
96        td.Controls.Add(new LiteralControl( FileName)); 
97        tr.Cells.Add(td); 
98        td = new TableCell(); 
99        td.Controls.Add(new LiteralControl( FileExt)); 
100        tr.Cells.Add(td); 
101        td = new TableCell(); 
102        td.Controls.Add(new LiteralControl( FileSize.ToString()+"字节")); 
103        tr.Cells.Add(td); 
104        td = new TableCell(); 
105        td.Controls.Add(new LiteralControl( FileModify.ToString("yyyy-mm-dd hh:mm:ss"))); 
106        tr.Cells.Add(td); 
107        tableDirInfo.Rows.Add(tr); 
108    } 
109}
C#文件操作:读取日志文件
1/// 〈summary〉 
2/// 读取日志文件 
3/// 〈/summary〉 
4private void ReadLogFile() 
5{ 
6    ///从指定的目录以打 开或者创建的形式读取日志文件 
7    FileStream fs =  
new FileStream(Server.MapPath("upedFile"
)+"\\logfile.txt", FileMode.OpenOrCreate,  
FileAccess.Read); 
9    ///定义输出字符串 
10    StringBuilder output = new StringBuilder(); 
11     
12    ///初始化该字符串的长度为0 
13    output.Length = 0; 
14     
15    ///为上面创建的文件流创建读取数据流 
16    StreamReader read = new StreamReader(fs); 
17     
18    ///设置当前流的起始位置为文件流的起始点 
19    read.BaseStream.Seek(0, SeekOrigin.Begin); 
20     
21    ///读取文件 
22    while (read.Peek() 〉 -1)  
23    { 
24        ///取文件的一行内容并换行 
25        output.Append(read.ReadLine() + "\n"); 
26    } 
27     
28    ///关闭释放读数据流 
29    read.Close(); 
30     
31    ///返回读到的日志文件内容 
32    return output.ToString(); 
}
  
  
C#文件操作:写入日志文件
1/// 〈summary〉 
2/// 写入日志文件 
3/// 〈/summary〉 
4/// 〈param name="input"〉〈/param〉 
5private void WriteLogFile(string input) 
6{     
7    ///指定日志文件的目录 
8    string fname = Server.MapPath("upedFile") + "\\logfile.txt"
9    ///定义文件信息对象 
10    FileInfo finfo = new FileInfo(fname); 
11 
12    ///判断文件是否存在以及是否大于2K 
13    if ( finfo.Exists && finfo.Length 〉 2048 ) 
14    { 
15        ///删除该文件 
16        finfo.Delete(); 
17    } 
18    ///创建只写文件流 
19   using(FileStream fs = finfo.OpenWrite()) 
20    { 
21   ///根据上面创建的文件流创建写数据流 
22   StreamWriter w = new StreamWriter(fs); 
23         
24    ///设置写数据流的起始位置为文件流的末尾 
25   w.BaseStream.Seek(0, SeekOrigin.End); 
26         
27    ///写入“Log Entry : ” 
28    w.Write("\nLog Entry : "); 
29         
30   ///写入当前系统时间并换行 
31    w.Write("{0} {1} \r\n", DateTime.Now. 
ToLongTimeString(), 
32     DateTime.Now.ToLongDateString()); 
33         
34    ///写入日志内容并换行 
35    w.Write(input + "\n"); 
36         
37    ///写入----------------“并换行 
38    w.Write("------------------\n"); 
39         
40  ///清空缓冲区内容,并把缓冲区内容写入基础流 
41   w.Flush(); 
42         
43        ///关闭写数据流 
44        w.Close(); 
45    } 
46}
C#文件操作:创建HTML文件
1/// 〈summary〉 
2/// 创建HTML文件 
3/// 〈/summary〉 
4private void CreateHtmlFile() 
5{     
6    ///定义和html标记数目一致的数组 
7    string[] newContent = new string[5]; 
8    StringBuilder strhtml =  
new StringBuilder(); 
9    try  
10    { 
11    ///创建StreamReader对象 
12    using (StreamReader sr =  
new StreamReader(Server.MapPath("createHTML") + "\\template.html"))  
13        { 
14     String oneline; 
15             
16     ///读取指定的HTML文件模板 
17     while ((oneline = sr.ReadLine())  
!= null)  
18     { 
19     strhtml.Append(oneline); 
20            } 
21     sr.Close(); 
22        } 
23    } 
24    catch(Exception err) 
25    { 
26        ///输出异常信息 
27        Response.Write(err.ToString()); 
28    } 
29    ///为标记数组赋值 
30    newContent[0] = txtTitle.Text;//标题 
31    newContent[1] = "BackColor=‘#cccfff‘";//背景色 
32    newContent[2] = "#ff0000";//字体颜色 
33    newContent[3] = "100px";//字体大小 
34    newContent[4] = txtContent.Text;//主要内容 
35 
36    ///根据上面新的内容生成html文件 
37    try 
38    { 
39    ///指定要生成的HTML文件 
40    string fname = Server.MapPath( "createHTML") +"\" + DateTime.Now.ToString( 
"yyyymmddhhmmss") + ".html"
41         
42   ///替换html模版文件里的标记为新的内容 
43   for(int i=0;i 〈 5;i++) 
44   { 
45    strhtml.Replace("$htmlkey["+i+"]",newContent[i]); 
46    } 
47    ///创建文件信息对象 
48    FileInfo finfo = new FileInfo(fname); 
49         
50    ///以打开或者写入的形式创建文件流 
51    using(FileStream fs = finfo.OpenWrite()) 
52   { 
53    ///根据上面创建的文件流创建写数据流 
54  StreamWriter sw = new StreamWriter(fs,System. 
Text.Encoding.GetEncoding("GB2312")); 
55             
56   ///把新的内容写到创建的HTML页面中 
57   sw.WriteLine(strhtml); 
58   sw.Flush(); 
59   sw.Close(); 
60   } 
61         
62   ///设置超级链接的属性 
63  hyCreateFile.Text = DateTime.Now.ToString("yyyymmddhhmmss")+".html"
64  hyCreateFile.NavigateUrl = " 
createHTML/"+DateTime.Now.ToString(" yyyymmddhhmmss")+".html";65    } 
66    catch(Exception err) 
67    {  
68        Response.Write (err.ToString()); 
69    } 
 
CreateDirectory方法的使用
using System;
using System.IO;
 
class Test
{
  public static void Main()
  {
    // Specify the directory you want to manipulate.
    string path = @"c:\MyDir";
 
    try
    {
      // Determine whether the directory exists.
      if (Directory.Exists(path))
      {
        Console.WriteLine("That path exists already.");
        return;
      }
 
      // Try to create the directory.
      DirectoryInfo di = Directory.CreateDirectory(path);
      Console.WriteLine("The directory was created successfully at {0}.", Directory.GetCreationTime(path));
 
      // Delete the directory.
      di.Delete();
      Console.WriteLine("The directory was deleted successfully.");
    }
    catch (Exception e)
    {
      Console.WriteLine("The process failed: {0}", e.ToString());
    }
    finally {}
  }
}
  
C#修改文件或文件夹名称
参考文档,做了个demo,move()方法其实就是重命名的;另外,使用DirectoryInfo中的moveto也是可以实现的。
sourceCode:
string srcFileName = @"D:/a.txt";
string destFileName = @"D:/b.txt";
string srcFolderPath = @"D:/1";
string destFolderPath = @"D:/6";
 
//方法一
if (System.IO.File.Exists(srcFileName))
{
System.IO.File.Move(srcFileName, destFileName);
}
if (System.IO.Directory.Exists(srcFolderPath))
{
System.IO.Directory.Move(srcFolderPath, destFolderPath);
}
 
//方法二
if (System.IO.File.Exists(srcFileName))
{
System.IO.FileInfo file = new System.IO.FileInfo(srcFileName);
file.MoveTo(destFileName);
}
if (System.IO.Directory.Exists(srcFolderPath))
{
System.IO.DirectoryInfo folder = new System.IO.DirectoryInfo(srcFolderPath);
folder.MoveTo(destFolderPath);
}

  转自http://blog.sina.com.cn/s/blog_5f82a10601019qlv.html

C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名

上一篇:SQL Server 2014里的缓存池扩展


下一篇:大话PHP缓存头