此篇文档是老早就放到草稿箱中了,断断续续编辑了几次。结合自己经常用到的对于文件的操作,结合msdn做此文。
1、File 类 --转自msdn
常用方法:
名称 | 说明 |
---|---|
AppendAllLines(String, IEnumerable<String>) |
向一个文件中追加行,然后关闭该文件。 如果指定文件不存在, 此方法会创建一个文件,向其中写入指定的行,然后关闭该文件。 |
AppendAllLines(String, IEnumerable<String>, Encoding) |
使用指定的编码向一个文件中追加行,然后关闭该文件。 如果指 定文件不存在,此方法会创建一个文件,向其中写入指定的行,然 后关闭该文件。 |
AppendAllText(String, String) | 打开一个文件,向其中追加指定的字符串,然后关闭该文件。 如果文件不存在,此方法将创建一个文件,将指定的字符串写 入文件,然后关闭该文件。 |
Create(String) | 在指定路径中创建或覆盖文件。 |
Create(String, Int32) | 创建或覆盖指定的文件。(string path, int bufferSize) |
Exists(String) | 确定指定的文件是否存在。bool |
Open(String, FileMode) | 以读/写访问权限打开指定路径上的 FileStream。 |
ReadAllLines(String) | 打开一个文本文件,读取文件的所有行,然后关闭该文件。 |
ReadAllText(String) | 打开一个文本文件,读取文件的所有行,然后关闭该文件。 |
|
创建一个新文件,向其中写入指定的字符串,然后关闭文件。 如果目标文件已存在,则覆盖该文件。 |
WriteAllLines(String, IEnumerable<String>) | 创建一个新文件,向其中写入一个字符串集合,然后关闭该文件。 |
使用File类用于典型操作,如复制、移动、重命名、创建、打开、删除和一次将追加到单个文件。您(这个字保留,敬亲爱的读者)还可以使用File类用于获取和设置文件属性或DateTime与创建过程中,相关信息访问及文件的写入。如果您想要在多个文件上执行操作,请参阅Directory.GetFiles 或 DirectoryInfo.GetFiles。
2、FileInfo 类 --转自msdn
提供用于创建、复制、删除、移动和打开文件的属性和实例方法,并且帮助创建 FileStream 对象。 此类不能被继承。
名称 | 说明 |
---|---|
FileInfo(String) |
初始化作为文件路径的包装的 FileInfo 类的新实例。 |
属性
名称 | 说明 | 语法 |
---|---|---|
CreationTime |
获取或设置当前文件或目录的创建时间。 (继承自 FileSystemInfo。) |
|
Directory |
获取父目录的实例。 |
public DirectoryInfo Directory { get; } |
DirectoryName |
获取表示目录的完整路径的字符串。 |
public string DirectoryName { get; } |
Exists |
获取指示文件是否存在的值。 (覆盖 FileSystemInfo.Exists。) |
public override bool Exists { get; } |
Extension |
获取表示文件扩展名部分的字符串。 (继承自 FileSystemInfo。) |
public string Extension { get; } |
FullName |
获取目录或文件的完整目录。 (继承自 FileSystemInfo。) |
public virtual string FullName { get; } |
Name | 获取文件名。 (覆盖 FileSystemInfo.Name。)
|
常用方法:
名称 | 说明 |
---|---|
AppendText() |
创建一个 StreamWriter,它向 FileInfo 的此实例表示的文件追加文本。 |
CopyTo(String) |
将现有文件复制到新文件,不允许覆盖现有文件。 |
Create() | 创建文件。 |
OpenText() | 创建使用从现有文本文件中读取的 UTF8 编码的 StreamReader。 |
3、Directory 类 --转自msdn
公开用于通过目录和子目录进行创建、移动和枚举的静态方法。 无法继承此类。
常用方法
名称 | 说明 | 备注 |
---|---|---|
CreateDirectory(String) |
在指定路径中创建所有目录和子目录,除非它们已经存在。 |
|
CreateDirectory(String, DirectorySecurity) |
在指定路径中创建所有目录(除非已存在),并应用指定的 Windows 安全性。 |
|
Delete(String) |
从指定路径删除空目录。 |
|
Delete(String, Boolean) |
删除指定的目录,并删除该目录中的所有子目录和文件(如果表示)。 |
|
Exists(String) | 确定给定路径是否引用磁盘上的现有目录。 | 如果 path 指向现有目录,则为 true; 如果该目录不存在或者在尝试确定指定目 录是否存在时出错,则为 false。 |
GetCurrentDirectory() | 获取应用程序的当前工作目录。 | 包含当前工作目录的路径且不以反斜杠 (\) 结尾的字符串。 |
名称 | 说明 | 语法 |
---|---|---|
Exists |
获取指示目录是否存在的值。(覆盖 FileSystemInfo.Exists。) |
public override bool Exists { get; } |
Extension | 获取表示文件扩展名部分的字符串。(继承自 FileSystemInfo。) | |
FullName | 获取目录的完整路径。(覆盖 FileSystemInfo.FullName。) | |
Name | 获取此 DirectoryInfo 实例的名称。(覆盖 FileSystemInfo.Name。) | |
Parent | 获取指定的子目录的父目录。 | |
Root | 获取目录的根部分。 |
方法
名称 | 说明 | 语法 |
---|---|---|
Create() |
创建目录。 |
|
Create(DirectorySecurity) |
使用 DirectorySecurity 对象创建目录。 |
|
Delete() | 如果此 DirectoryInfo 为空则将其删除。(覆盖 FileSystemInfo.Delete()。) | |
Delete(Boolean) | 删除 DirectoryInfo 的此实例,指定是否删除子目录和文件。 | |
GetFiles() | 返回当前目录的文件列表。(FileInfo 类型的数组。) | di.GetFiles() |
GetFiles(String) | 返回当前目录中与给定的搜索模式匹配的文件列表。(FileInfo 类型的数组。) | di.GetFiles("*2*") di.GetFiles("test?.txt") |
综合应用的例子
1 class FileOperate 2 { 3 /// <summary> 4 /// 构造函数 5 /// </summary> 6 public FileOperate() 7 { 8 } 9 10 /// <summary> 11 /// FileOperate1()的重载 12 /// 理解构造函数 13 /// </summary> 14 public void FileOperate1() 15 { 16 } 17 public static void Main() 18 { 19 try 20 { 21 FileOperate fo = new FileOperate(); 22 #region 文件夹操作:是否存在,创建,删除 23 //string path = @"D:\MrSong1"; //正常路径 24 //string illeglePath = @"D:\111>"; //含有非法字符 25 //string overLengthPath = @"" + fo.GetLongPath(); //路径超长 26 27 //fo.DirectoryNomal(path); //正常 28 29 //fo.DirectoryNomal(illeglePath); //报“路径中存在非法字符异常”,下面的方法不执行 30 31 //fo.DirectoryNomal(overLengthPath); //修改illegalPath为正确路径后,执行此方法,报”指定路径名过长“ 32 #endregion 33 34 #region 文件操作 35 string filePath = @"D:\11.txt"; 36 fo.FileOperate1(filePath); 37 File.Delete(filePath); //删除 38 #endregion 39 40 } 41 catch (Exception ex) 42 { 43 Console.WriteLine(ex); 44 } 45 Console.ReadKey(); 46 } 47 48 /// <summary> 49 /// 文件夹操作 50 /// </summary> 51 /// <param name="path"></param> 52 private void DirectoryNomal(string path) 53 { 54 if (Directory.Exists(path)) 55 { 56 Console.WriteLine("Directory类方法判断:存在路径"); 57 Console.WriteLine("删除:" + path); 58 Directory.Delete(path); //删除 59 } 60 else 61 { 62 Console.WriteLine("Directory类方法判断:不存在" + path); 63 Console.WriteLine("创建:" + path); 64 Directory.CreateDirectory(path); //创建 65 } 66 DirectoryInfo dirInfo = new DirectoryInfo(path); 67 if (dirInfo.Exists) 68 { 69 Console.WriteLine("DirectoryInfo属性判断:存在路径" + path); 70 Console.WriteLine("DirectoryInfo删除:" + path); 71 dirInfo.Delete(); 72 } 73 else 74 { 75 Console.WriteLine("DirectoryInfo属性判断:不存在路径"); 76 Console.WriteLine("DirectoryInfo创建:" + path); 77 dirInfo.Create(); //创建路径 78 } 79 } 80 81 /// <summary> 82 /// 获取长文件夹名称 83 /// </summary> 84 /// <returns></returns> 85 private string GetLongPath() 86 { 87 string path = ""; 88 char[] Pattern = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' }; 89 System.Random random = new Random(~unchecked((int)DateTime.Now.Ticks)); 90 int i = 0; 91 int n = Pattern.Length; 92 93 while (i <= 257) 94 { 95 int rnd = random.Next(0, n); 96 path += Pattern[rnd]; 97 i++; 98 } 99 return path; 100 } 101 102 /// <summary> 103 /// 文件操作 104 /// </summary> 105 /// <param name="path"></param> 106 public void FileOperate1(string path) 107 { 108 if (File.Exists(path)) 109 { 110 Console.WriteLine(path + "文件存在"); 111 File.Delete(path); 112 } 113 else 114 { 115 Console.WriteLine(path + "文件不存在"); 116 Console.WriteLine("创建该文件!"); 117 File.Create(path); 118 } 119 File.WriteAllLines(path, new string[] { "Hello World!" }); 120 } 121 }
注意:
1、Exists是Directory类的方法,在DirectoryInfo中是属性。
2、DirectoryInfo类初始化(构造函数)中会报异常,有非法字符串,超长,path为null,调用方没有权限错误。