C#培训2019-9-27 第八课 读写文件的一些类 File FlieInfo Directory DirectoryInfo StreamReader StreamWriter Path

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_41617697/article/details/101543277

一、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 接口,则必须释放资源

猜你喜欢

转载自blog.csdn.net/qq_41617697/article/details/101543277