文件及IO操作(二)
FileInfo操作
下表描述了FileInfo类的一些常用属性:
属性 |
描述 |
Attributes |
获得或设置当前文件相关的属性。这个属性继承自FileSystemInfo。 |
CreationTime |
获取或设置当前文件的创建时间。这个属性继承自FileSystemInfo。 |
Directory |
获取文件属于的目录的实例。 |
Exists |
获得表示文件存在否的布尔值。 |
Extension |
获取包含文件扩展的字符串。这个属性继承自FileSystemInfo。 |
FullName |
获取包含文件全部路径的字符串。这个属性继承自FileSystemInfo。 |
LastAccessTime |
获取文件的最后访问时间。这个属性继承自FileSystemInfo。 |
LastWriteTime |
获得文件最后写入的时间。这个属性继承自FileSystemInfo。 |
Length |
获得文件的大小。 |
Name |
获取包含给定文件名的字符串。 |
string path=@"e:\a.txt";
FileInfo file=new FileInfo(path);//path表示文件地址;
文件的属性:
1 file.FullName;//获取文件全地址 2 file.Length.ToString() + "btyes";//获取文件大小 3 4 file.CreationTime.ToLongTimeString();//获取文件的创建时间 5 6 file.LastAccessTime.ToLongTimeString();//获取文件最后访问时间 7 8 file.LastWriteTime.ToLongTimeString();//获取文件最后的修改时间
可以读取和保存路径:
1 file.WriteAllText(路径,内容);//把文件复制到路径指向的文件(如果没有改文件则自动创建,有则覆盖) 2 3 file.ReadAllText(路径);//读取路径所指向文件的内容
获取目录的完整路径:
1 string dirname= file.DirectoryName;
DirectoryInfo操作
下表描述了DirectoryInfo类的一些公用属性:
属性 |
描述 |
Attributes |
获得或设置当前文件的相关属性。这个属性继承自FileSystemInfo。 |
CreationTime |
获得或设置当前文件的创建时间。这个属性继承自FileSystemInfo。 |
Exists |
获得表示目录是否存在或不存在的布尔值。 |
Extension |
获得包含文件扩展名的字符串。这个属性继承自FileSystemInfo。 |
FullName |
获取包含目录全部目录的字符串。这个属性继承自FileSystemInfo。 |
LastAccessTime |
获得最后访问目录的时间。这个属性派生自FileSystemInfo。 |
Name |
得到给定文件的包含名称的字符串。 |
下表描述了DirectoryInfo类的一些常用的方法:
方法 |
描述 |
Create |
创建一个目录。 |
CreateSubdirectory |
创建一个子目录。 |
Delete |
删除一个目录。 |
GetDirectories |
在当前目录中匹配规则之后,返回目录。它也允许你在目录中搜索子目录。 |
GetFiles |
在当前目录中返回文件。 |
string paths=@"e:\1";
DirectoryInfo dir=new DirectoryInfo(paths);
获取目录下的文件及文件夹的方法:
1 dir.GetFiles();//得到“1”文件夹下的所有文件,返回存有所有文件的FileInfo数组 2 3 dir.GetDirectories();//的到“1”文件夹下的所有文件夹
判断目录是否存在:
1 if (!dir.Exists)//也可以Directory.Exists(paths)来实现 2 { 3 throw new FileNotFoundException(path + "目录没有找到"); 4 }
获取上一级目录的目录名:
string parentpath= dir.Parent.FullName; //或 string parentpath=Directory.GetParent(paths).ToString();
删除选择的文件夹:
dir.Delete(true);//等价于Directory.Delete(dir.FullName,true);
创建文件夹:
dir.Create();
Path操作
下表描述了Path类的静态方法:
ChangeExtension | 更改路径字符串的扩展名 |
Combine(String, String) | 将两个字符串组合成一个路径 |
GetDirectoryName | 返回指定路径字符串的目录信息 |
GetExtension | 返回指定的路径字符串的扩展名 |
GetFileName | 返回指定路径字符串的文件名和扩展名 |
GetFileNameWithoutExtension | 返回不具有扩展名的指定路径字符串的文件名 |
GetFullPath | 返回指定路径字符串的绝对路径 |
GetInvalidFileNameChars | 获取包含不允许在文件名中使用的字符的数组 |
GetInvalidPathChars | 获取包含不允许在路径名中使用的字符的数组 |
GetPathRoot | 获取指定路径的根目录信息 |
GetRandomFileName | 返回随机文件夹名或文件名 |
GetTempFileName | 创建磁盘上唯一命名的零字节的临时文件并返回该文件的完整路径 |
GetTempPath | 返回当前用户的临时文件夹的路径 |
HasExtension | 确定路径是否包括文件扩展名 |
IsPathRooted | 获取指示指定的路径字符串是否包含根的值 |
获取指定路径的文件名:
1 string a = Path.GetFileName(writepath);//返回指定路径字符串的文件名和扩展名 2 string a = Path.GetFileName(writepath);//返回指定路径字符串的目录信息
合并路径:
1 /* 2 2. 合并两个字符路径字符串 3 public static string Combine(string path1,string path2) 4 参数: 5 path1(String) ,第一个路径 6 path2(String), 第二个路径 7 返回值: 8 String ,合并后的路径字符串。 9 常见的合并操作为: 10 */ 11 string path3 = @"e:\test"; 12 string path4 = @"1.txt"; 13 string s5 = Path.Combine(path3, path4); 14 Console.WriteLine(s5); //返回:"c:\test\1.txt"
更改路径字符串的扩展名:
1 /* 2 更改路径字符串的扩展名 3 public static string ChangeExtension(string path,string extension) 4 参数: 5 path(String):要修改的路径信息. 6 extension(String):新的扩展名。 7 返回值: 8 String,修改后的路径字符串。 9 */ 10 //如果 extension 是 null,则返回的字符串包含指定的路径,其扩展名已移除(点还在)。 11 string str1 = Path.ChangeExtension(@"e:\test\1.txt", "");//返回e:\test\1. 12 Console.WriteLine(str1); 13 //如果 path 不具有扩展名,并且 extension 不是 null,则返回的路径字符串包含 extension,它追加到 path 的结尾。 14 string str2 = Path.ChangeExtension(@"e:\test\2", ".txt");//返回D:\test\2.txt 15 Console.WriteLine(str2); 16 //仅更改路径字符串中的扩展名,并不会改变实际文件的扩展名或者目录。
获取指定路径字符串的目录信息:
Console.WriteLine(Path.GetDirectoryName(@"e:\test\test1\1.txt"));//返回文件的目录名
实例:
1 static void Main(string[] args) 2 { 3 if (args == null || args.Length < 1) 4 return; 5 string myPath = args[0]; 6 Console.WriteLine("目录名称:{0}", Path.GetDirectoryName(myPath)); 7 Console.WriteLine("路径扩展名:{0}", Path.GetExtension(myPath)); 8 Console.WriteLine("文件名:{0}", Path.GetFileName(myPath)); 9 Console.WriteLine("不带扩展名的名称:{0}", Path.GetFileNameWithoutExtension(myPath)); 10 Console.WriteLine("绝对全路径:{0}", Path.GetFullPath(myPath)); 11 Console.WriteLine("根目录:{0}", Path.GetPathRoot(myPath)); 12 Console.WriteLine("不带根目录的路径:{0}", Path.GetFullPath(myPath).Remove(0, 3)); 13 Console.ReadKey(); 14 }