版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
一、File 和 FileInfo 类
File 以及 FileInfo 类的方法比较类似,File 为静态类,若只是一次操作,一般用File 就行,不会实例化FileInfo类的对象出来。 两者一般用来进行 文件的创建、移动、查询以及删除的工作
FileStream Create ( string path) //创建一个文件
void Delete(string path)//删除指定的文件
bool Exists(string path)//判断文件是否存在(**一般会用作保护**)
//例如
if ( File.Exists("Data.txt") ==false)
{
return;
}
二、相对路径和绝对路径
绝对路径一般不用
相对路径:1、" .\ "表示当前路径(可以省略);2、 " ..\ "表示上一层路径 3、下一层路径直接写就行,如:"New\123.text"
三、Directory 类和 DirectoryInfo 类:文件目录操作
主要实现:创建目录、删除目录、得到子目录、得到目录下的文件
1、Directory 类(静态类)
删除目录
void Delete ( string path )
判断指定路径是否存在
bool Exists(string path)
查找父目录
DirectoryInof GetParent()
拿到子目录
DirectoryInof GetDictories()
拿到目录下的所有文件路径名称
string [ ] Directory.GetFiles(path)
移动文件夹
void Move(移动前路径,移动后路径)
2、DirectoryInfo 类
常用属性:
属性 | 说明 |
---|---|
Parent | 获取指定子目录的父目录 |
Root | 获取指定子目录的根目录 |
Exist | 目录是否存在 |
三、Path类(静态)
常用方法:
返回路径的拓展名:
string GetExtension ( string path )
获取路径的根目录:
string GetPathRoot (string path)
四、OpenFileDialog 类 打开对话框,选择哪个文件
常用属性
筛选器 Filter :
dalog.Filter = "文本文件(.txt)|*.txt";// " | " 前面表示标签,后面表示后缀
//若可以访问多个,则用逗号分开
dalog.Filter = "文本文件(.txt,.pdf)|*.txt,*.pdf";
名称title:
dalog.Title = "123";
实际使用例如:
OpenFileDialog dialog = new OpenFileDialog();
dialog.Title = "123";
dialog.Filter = "文本文件(.txt)|*.txt";
dialog.ShowDialog();
string szPath = dialog.FileName;// szPath 中就为选择文档的路径
五、SaveFileDialog 类 打开对话框,选择保存在哪个文件夹以及保存的名称
使用方法与OpenFileDialog类似,例如:
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = " NC Files(*.nc)|*.nc|All files(*.*)|*.*";
saveFileDialog.RestoreDirectory = true;
if( saveFileDialog.ShowDialog() == DialogResult.Cancel ) {
MessageBox.Show( "请选择保存的路径" );
return;
}
string szFoldPath = saveFileDialog.FileName;
六、StreamReader 类和 StreamWriter 类(重点!)
1、StreamReader
使用:
1.1首先实例化
StreamReader sr = new StreamReader ( @"D:\TEST.txt");
1.2一行一行读取,直到结尾时
方法1、
while ((temp = sr.ReadLine()) !=null )
{
Console.WriteLine ( temp );
}
sr.Close();
sr.Dispose();//一定要释放
方法2、
while ( sr.EndofStream =false )
{
Console.WriteLine ( temp );
}
sr.Close();
sr.Dispose();//一定要释放
1.3若不手动释放资源,可以利用using(){}
using(StreamReader sr = new StreamReader ( @"D:\TEST.txt"))
{
while ( sr.EndofStream =false )
{
Console.WriteLine ( temp );
}
}
//using { }中的变量相当于局部变量
//当using 里面的内容执行完,就自动释放资源了
1.4释放资源的一般 配合 try catch finally 使用
因为 finally 一定会执行
例如:
StreamReader sr = new StreamReader(@"D:\test.txt");
try {
while( sr.EndOfStream ) {
string szReadLine = sr.ReadLine();
Console.WriteLine( szReadLine );
}
}
catch( Exception ) {
throw;
}
finally {
sr.Dispose();
}
此时 不管try 中的内容是否出错,finally下的释放资源一定能执行。
什么时候需要释放? 例如FileInfo 的对象不需要释放
查看类继承自哪个类,如果看到有 IDisposable 接口,则必须释放资源