C#中操作IO常用类
在C#里我们操作IO的话,微软为我们封装了好几个实用的静态类,如Directory类,File类 也提供了需要实例的普通类,DirectoryInfo,FileInfo类
参考文档:微软官方文档
首先需要说明一下两者的图别和使用场景:
例如FileInfo类和File类之间许多方法调用都是相同的,但是FileInfo类没有静态方法,该类中的方法仅可以用于实例化的对象。File类是静态类,其调用需要字符串参数为每一个方法调用规定文件位置,因此如果要在对象上进行单一方法
调用,则可以使用静态File类。在这种情况下静态调用速度要快一些,因为.NET框架不必执行实例化对象并调用其方法。如果要在文件上执行几种操作,则实例化FileInfo对象并调用其方法更好一些,这样会提高效率,因为对象将在文件系统上引用正确的文件,而静态类却必须每次都必须寻找文件
结论:对于一个文件的单一操作,使用静态更好, 复杂操作使用普通类更好
1 //File确定指定的文件是否存在。 2 public static bool Exists(string path); 3 //FileInfo获取指示文件是否存在的值。 4 public override bool Exists { get; } 5 6 //File类 7 Console.WriteLine(File.Exists(@"D:\1\1.txt")); 8 //FileInfo类 9 FileInfo fi = new FileInfo(@"D:\1\1.txt");//创建文件对象 10 Console.WriteLine(fi.Exists);//判断文件是否存在
File类
//File类 var dir = "C:\\Users\\enjoy\\Desktop\\Dir\\test.txt"; //判断是否存在 if (File.Exists(dir)) { //追加文本 File.AppendAllText(dir, "我要追加"); string content = File.ReadAllText(dir); Console.WriteLine(string.Format("文本的内容为:{0}", content.Trim()));
//删除文件 File.Delete(dir); } else { using (var writer = File.CreateText(dir)) { writer.WriteLine("你好"); writer.WriteLine("再见"); } }
Directory类
//Directory类 string DirL = "C:\\Users\\enjoy\\Desktop\\Dir\\测试目录\\"; //判断目录是否存在 if (!Directory.Exists(DirL)) { //创建目录 var ttt = Directory.CreateDirectory(DirL); //添加测试文件 for (int i = 0; i < 10; i++) { if (!File.Exists(DirL + "这是第" + i + ".txt")) { using (var temp = File.CreateText(DirL + "这是第" + i + ".txt")) { temp.Write("第" + i + "记录所添加"); temp.Write("*********************"); } } }; } //获取目录文件路径 string[] files = Directory.GetFiles(DirL); foreach (var item in files) { Console.WriteLine(item); } //删除路径 Directory.Delete(DirL);