C# 与文件相关的几个类(1)
C# 与文件访问相关的常用的类:
File类、Directory类、Path类、FileInfo类、DirectoryInfo类、FileSystemInfo类、FileSystemWatcher类
以上几个类均在System.IO命名空间下。
挨个说吧:
File类:静态类,只有静态方法,用于移动复制删除文件等操作。
方法:
Copy(String, String) | 将现有文件复制到新文件。 不允许覆盖同名的文件。无返回值。 |
Copy(String, String, Boolean) | 将现有文件复制到新文件。 允许覆盖同名的文件。无返回值。 |
Create(String) | 在指定路径中创建或覆盖文件。返回类型为FileStream类型。 |
Create(String, Int32) | 在指定路径中创建或覆盖文件,指定缓冲区大小。返回类型为FileStream类型。 |
Create | 创建或打开用于写入 UTF-8 编码文本的文件。 如果该文件已存在,将覆盖其内容。返回值为StreamWriter类型。 |
Delete(String) | 删除指定的文件。无返回值。 |
Exists(String) | 确定指定的文件是否存在。返回值为bool类型。 |
Move(String, String) | 将指定文件移到新位置,提供要指定新文件名的选项。无返回值。 |
Open(String, File | 通过不共享的读/写访问权限打开指定路径上的 FileStream。返回值为FileStream类型。 |
Read | 打开一个二进制文件,将文件的内容读入一个字节数组,然后关闭该文件。返回值为byte[]。 |
Read | 打开一个文本文件,读取文件的所有行,然后关闭该文件。返回值为string[]。 |
Read | 打开一个文件,使用指定的编码读取文件的所有行,然后关闭该文件。返回值为string[]。 |
Write | 创建一个新文件,在其中写入指定的字节数组,然后关闭该文件。 |
Copy有两个重载,如下:
第一个是将现有文件复制到新文件。 不允许覆盖同名的文件。
第二个有一个bool参数,如果可以覆盖目标文件,则为 true;否则为 false。
两个sourceFileName和destFileName都是文件名称,不能是目录名称。
File.Copy(@"D:MyTest.txt", @"E:MyTest.txt");
File.Copy(@"D:MyTest.txt", @"E:MyTest.txt",true);
Create有四个重载,如下:
说前两个,区别在于是否指定缓冲区大小。所有的Create都是没有文件就创建,有相应文件的话就覆盖。
FileStream fs = File.Create(@"D:MyTest.txt"); byte[] info = Encoding.UTF8.GetBytes("This is the text in the file!"); fs.Write(info, 0, info.Length); fs.Close();
CreateText,创建或打开用于写入 UTF-8 编码文本的文件。 如果该文件已存在,将覆盖其内容。
StreamWriter sw = File.CreateText(@"D:MyTest.txt"); sw.WriteLine("This is the text in the file!"); sw.Close();
Delete,删除指定的文件。
File.Delete(@"D:MyTest.txt");
Exists,检查文件是否存在。
bool isExist = File.Exists(@"D:MyTest.txt"); Console.WriteLine(isExist);
Move,将指定文件移动到新位置。若找不到源文件或者目标位置有同名文件(也就是不会覆盖同名文件)则报IOException异常。
File.Move(@"D:MyTest.txt", @"E:MyTest.txt");
WriteAllLines,创建一个新文件,在其中写入一个或多个字符串,然后关闭该文件。注意有每个字符串写入时会换行。
string[] contents = { "This is the text in the file!" }; File.WriteAllLines(@"D:MyTest.txt", contents);
ReadAllLines,打开一个文本文件,读取文件的所有行,然后关闭该文件。
string[] contents = File.ReadAllLines(@"D:MyTest.txt"); foreach (var item in contents) { Console.WriteLine(item); }