1.System.IO.Path的成员介绍
名称 说明
ChangeExtension 更改路径字符串的扩展名。
Combine( array<String []()>[]) 将字符串数组组合成一个路径。
Combine(String, String) 将两个字符串组合成一个路径。
Combine(String, String, String) 将三个字符串组合成一个路径。
Combine(String, String, String, String)将四个字符串组合成一个路径。
GetDirectoryName 返回指定路径字符串的目录信息。
GetExtension 返回指定的路径字符串的扩展名。
GetFileName 返回指定路径字符串的文件名和扩展名。
GetFileNameWithoutExtension 返回不具有扩展名的指定路径字符串的文件名。
GetFullPath 返回指定路径字符串的绝对路径。
GetInvalidFileNameChars 获取包含不允许在文件名中使用的字符的数组。
GetInvalidPathChars 获取包含不允许在路径名中使用的字符的数组。
GetPathRoot 获取指定路径的根目录信息。
GetRandomFileName 返回随机文件夹名或文件名。
GetTempFileName 创建磁盘上唯一命名的零字节的临时文件并返回该文件的完整路径。
GetTempPath 返回当前系统的临时文件夹的路径。
HasExtension 确定路径是否包括文件扩展名。
IsPathRooted 获取一个值,该值指示指定的路径字符串是包含绝对路径信息还是包含相对路径信息。
2.FileStream类
<1>构造方法
-> FileStream("文件路径", FileMode, FileAccess);
进行读文件操作时
string path=@"C:\Users\Avraber\Desktop\新建文件夹\";
FileStream fread = new FileStream(Path.Combine(path, "1.txt"), FileMode.Open, FileAccess.Read);
进行写文件操作时
string path=@"C:\Users\Avraber\Desktop\新建文件夹\";
FileStream fwrite = new FileStream(Path.Combine(path, "2.txt"), FileMode.Create, FileAccess.Write);
<2>关于释放资源
实例化出file并进行使用后,需调用file.close();file.Dispose() 方法进行资源释放。
当然,在资源的使用之外添加using,花括号结束后也能自动释放。
当一个实例化的东西,能调用Dispose方法时,需使用using
<3>FileStream的读写操作
---->file.ReadByte();
一个字节一个字节的进行读操作,返回值为-1时,表示读取完毕
---->file.WriteByte();
同理,进行一个字节的写操作
---->file.Flush();
把内存缓存区的数据写入硬盘
static void Main(string[] args)
{
string path = @"C:\Documents and Settings\蒋坤\桌面\Source";
FileStream reader = new FileStream(Path.Combine(path, "1.txt"), FileMode.Open, FileAccess.Read);
FileStream writer = new FileStream(Path.Combine(path, "2.txt"), FileMode.Create, FileAccess.Write);
//进行读操作,然后写进令一个文件里
using (reader)
{
using (writer)
{
int res = -1; //当文件读完的时候,返回的值会变成-1;
while ((res = reader.ReadByte()) != -1)
{
writer.WriteByte(Convert.ToByte(res));
}
}
}
}
-------->file.read()方法
file.read(byte [],int offset ,int count)
byte[] bs = new byte[18];
file.Read(bs, 0, bs.Length); // 从bs的第0个位子开始放数据,一次性读lenght个数据
-------->file.write()方法,一样的操作
--------->read and write操作
byte[] bs = new byte[5];
int count = 0;
while ((count = reader.Read(bs, 0, bs.Length)) != 0) //count 为读的时候能够读到数的个数,当为0时,读取结束
{
writer.Write(bs, 0, count); //这边写count 不写bs.Lenght是因为加入最后几个数没有满足bs,Length的长度时,
} //会出错,所以写count,最后有几个,写几个。
3.读写流StreamReader 和StreamWriter
<1>读流StreamReader
------->读流的构造方法
(1)StreamReader(Stream) //stream 为文件流
为指定的流初始化 StreamReader 类的新实例,此构造函数将编码初始化为 UTF8Encoding,占用资源,需使用using
FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read)
StreamReader reader = new StreamReader(file)
(2)StreamReader(String) //String为要读取的完整文件路径 这里的路径可以使相对路径
-------->重要的方法
ReadLine 从当前流中读取一行字符并将数据作为字符串返回。
string res = string.Empty;
while ((res = reader.ReadLine()) != null) //判断读取的行下一次不为空
{
Console.WriteLine(res);
}
ReadToEnd 从流的当前位置到末尾读取流。
res = reader.ReadToEnd();
Console.WriteLine(res);
<2>写流StreamWriter
-------->写流的构造方法用法与读流相同
--------->重要的方法
WriteLine ()将行结束符写入文本流
4.File类 ( FileInfo为实例类,与File用法差不多,不过要先实例化)
File 类用于典型的操作,如复制、移动、重命名、创建、打开、删除和追加到文件
所有的 File 方法都是静态的,所以如果只想执行一个操作,那么使用 File 方法的效率比使用相应的 FileInfo 实例方法可能更高。
所有的 File 方法都要求当前所操作的文件的路径。
注: 参数中,engcoding一般写的时候是写 Encoding.Default
file方法:
AppendAllText(String, String) 打开一个文件,向其中追加指定的字符串,然后关闭该文件。如果文件不存在,此方法创建一个文件,将指定的字符串写入文件,然后关闭该文件。
AppendAllText(String, String, Encoding) 将指定的字符串追加到文件中,如果文件还不存在则创建该文件。
AppendAllText(String, String) 打开一个文件,向其中追加指定的字符串,然后关闭该文件。如果文件不存在,此方法创建一个文件,将指定的字符串写入文件,然后关闭该文件。
AppendAllText(String, String, Encoding) 将指定的字符串追加到文件中,如果文件还不存在则创建该文件。
Move 将指定文件移到新位置,并提供指定新文件名的选项。
Delete 删除指定的文件。如果指定的文件不存在,则不引发异常。
Open(String, FileMode, FileAccess) 以指定的模式和访问权限打开指定路径上的 FileStream。
OpenRead 打开现有文件以进行读取。
File.ReadAllLines(路径, 格式编码); 返回路径所表示的文本文件,并以行为单位作为string数组返回
File.ReadAllText(路径, 格式编码); 返回路径表示的文本文件中的所有字符串
StreamReader对象的ReadLine方法与ReadToEnd方法
File.WriteAllLines(路径, string数组, 格式编码);
将数组以行单位写到路径表示的文件中
详见MSDN
5.Directory 类(目录)(Directoryfo为实例类,与Directory用法差不多,不过要先实例化)
公开用于创建、移动和枚举通过目录和子目录的静态方法。此类不能被继承。
将 Directory 类用于典型操作,如复制、移动、重命名、创建和删除目录。
所有的 Directory 方法都是静态的,所以如果只想执行一个操作,
那么使用 Directory 方法的效率比使用相应的 DirectoryInfo 实例方法可能更高。
Directory方法:
CreateDirectory(String) 按 path 的指定创建所有目录和子目录。
Delete(String) 从指定路径删除空目录。
Delete(String, Boolean) 删除指定的目录并(如果指示)删除该目录中的任何子目录。
GetCurrentDirectory 获取应用程序的当前工作目录。
GetDirectories(String) 获取指定目录中子目录的名称。
GetFiles(String) 返回指定目录中的文件的名称。
GetFileSystemEntries(String) 返回指定目录中所有文件和子目录的名称。
Move 将文件或目录及其内容移到新位置。
SetCurrentDirectory 将应用程序的当前工作目录设置为指定的目录。