BCL
- System.IO.FileInfo
- System.IO.DirectoryInfo MSDN
- System.IO.Directory
- System.IO.File
View Code using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; namespace ConsoleApplication3 { class Program { static void Main(string[] args) { //FileInfo //DirectoryInfo //File //Director var users = new List<string>(); //创建循环目录 users.Add("Shawn"); users.Add("Tutu"); users.Add("Baba"); foreach (var user in users) { for (var i = 0; i < 5; i++) { Directory.CreateDirectory(string.Format("Homework/{0}/week_{1}", user, i)); } } if (!Directory.Exists("Test")) //Directory例子:static方法,可以直接叫,path为当前project位置 { Directory.CreateDirectory("Test"); } File.Delete("test.txt"); var directroyInfo = new DirectoryInfo("c:\\"); //DirectoryInfo例子:需要object承载,需要写path地址 Console.WriteLine("File:"); foreach (FileInfo info in directroyInfo.GetFiles()) //Returns a file list from the current directory { Console.WriteLine("{0} - {1}", info.Name, info.Length); } Console.WriteLine("\nSub Directories:"); foreach (DirectoryInfo info in directroyInfo.GetDirectories()) { Console.WriteLine("{0}", info.Name); } Console.ReadKey(); } } }
- Dictionary
- HashSet
- Queue
- Stack
HashSet collection:只能存储给定type的不重复的值
用法:我想控制没有重复的数据或者找出重复的数据
主要应用在判断是否值已经被add进过
这样也可以
或者反向操作,找出所有duplicate的值,只要变为if (!set.Add(item))就可以
Queue: First in first out collection
用法:比如我想向外输出一组数据,先进的先出,这样每Dequeue()一个就从collection里移出一个。Enqueue()相当于add到最后,Dequeue()相当于remove第一个,然后返回这个type(即继续持有这个被移除的object)
ops = new Queue<IOperation>();这句,ops是reference object,它指向的是新new出来的Queue<IOperation>内存,而_ops也是指的同一个内存空间。
output是这样的
因为ops到第四个coolection item的时候,dequeue移出这个object后,持有这个object,执行内部的enqueue,把其又加回到queue队尾
while(ops.Count > 0) { ops.Dequeue().Exec(); } //相当于 while(ops.Count > 0) { Ioperation op = ops.Dequeue(); op.Exec(); }
Stack: 先进后出
上面的例子代码不变只是把所有是Queue类型的换成是Stack类型:Statck<Ioperation>
结果成
Queue VS Stack