C#简单的文件操作

C#简单的文件操作

一、文件概述

程序中的数据通常保存在内存中,程序关闭后,数据就会清除。文件就适合保存相对简单的数据或程序的计算结果。

二、文件内容的读写

1、步骤

  1. 创建文件流
  2. 创建阅读器或者写入器
  3. 执行读写操作
  4. 关闭阅读器或者写入器
  5. 关闭文件流

2、步骤分解

2.1、文件流

流是一个用于数据传输的对象。

我们使用的文件流是FileStream类,使用前需要导入System.IO命名空间,它主要用于读写文件中的数据,在创建它的对象时,需要在它的构造函数中指定参数。如下:

FileStrean fs = new FileStrean(路径,FileMode);

其中的FileMode是枚举类型,有以下值:

  1. CreateNew :创建新的文件,如果文件已经存在会异常
  2. Create :创建新文件,文件如果已经存在了直接打开已经存在的文件
  3. Open:打开一个已经存在的文件,如果文件不存在会报错
  4. OpenOrCreate :文件存在则打开已经存在的文件。文件不存在则先创建一个新的文件,再打开
  5. Truncate:文件存在的话,先把里面的内容删除,然后再往里面写内容。文件不存在会发生异常
  6. Append:打开一个已经存在的文件,在最后追加内容。。如果文件不存在,则异常
2.2、阅读器/写入器
2.2.1、写入器:StreamWriter

写入器创建对象的语法:

StreamWriter writer = new StreamWriter(文件流对象);

常用方法有:

  1. StreamWriter.Write() :用于写入流,这个流就是我们创建好的流
  2. StreamWriter.WriteLine():用于写入一行数据,写入后跟换行符
  3. StreamWriter.Close():用于关闭写入器
2.2.2、阅读器:StreamReader

阅读器创建对象的语法:

StreamReader reader = new StreamReader(文件流对象);

常用方法有:

  1. StreamReader.ReadLine():读取文件流中的一行数据,并返回字符串
  2. StreamReader.ReadToEnd():从当前位置都到末尾,返回字符串
  3. StreamReader.Close():用于关闭读取器

3、乱码问题

用StreamReader读取文件中的中文文本,因为不同的文件编码格式的不同导致有时会产生乱码问题。

所以C#中使用Encoding类指定字符编码。Encoding类位于System.Text命名空间,用来表示字符编码。语法如下:

StreamReader reader = new StreamReader(文件流对象,Encoding.Default);

Encoding.Default:获取操作系统的当前编码

也可以通过**Encoding类的静态方法GetEncoding(string name)**指定字符编码,参数name必须是C#支持的编码名。

三、文件和目录的操作

都位于System.IO命名空间中

1、文件

File

File是静态类,它的主要方法如下表所示:

方法名称说明
Delete(string path)删除文件,若文件不存在,不会异常
Exists(string path)用于检查指定文件是否存在,返回bool
Copy(string sourceFilePath,string destFileName)将指定路径的源文件中的内容复制到目标文件中,如果目标文件不存在,在指定路径中新建一个文件
Move(string sourceFilePath,string destFileName)将指定文件移动到一个新的路径(新路径不能已存在相同的文件名)
Creat(string path)新建文件

FileInfo

FileInfo 是非静态类

使用时必须创建对象才能使用:

FileInfo fi = new FileInfo(string path);  

它的主要属性和方法如下表所示:

方法/属性说明
Delete() //方法删除文件,若文件不存在,不会异常
Exists //属性用于检查指定文件是否存在,返回bool
CopyTo(string destFileName) //方法将现有文件复制到新文件,不允许覆盖现有文件
MoveTo(string destFileName) //方法将指定文件移动到一个新的路径(新路径不能已存在相同的文件名)
Extension //属性获取表示文件扩展名部分的字符串
Name //属性获取文件名
FullName //属性获取目录或文件的完整目录

2、目录

Directory

Directory是静态类,它的主要方法如下表所示:

方法名称说明
Delete(string path)删除指定目录
Exists(string path)用于检查指定目录是否存在,返回bool
Move(string sourceFilePath,string destFileName)用于将文件或目录及其内容移动到一个新位置
CreateDirectory(string path)新建文件
Delete(string path,bool recursive)删除指定目录,如果bool值为true,删除子目录中的所有目录内容
GetDirectories(string path)得到当前目录的子目录 Directory[]接收
GetFiles(string path)得到当前目录的所有文件 File[]接收

DirectoryInfo

DirectoryInfo 是非静态类

使用时必须创建对象才能使用:

DirectoryInfo  directoryInfo = new DirectoryInfo(string path);  

它的主要属性和方法如下表所示:

方法/属性说明
Delete() //方法删除目录
Exists //属性用于检查指定目录是否存在,返回bool
MoveTo(string destFileName) //方法将目录移动到一个新路径(新路径不能已存在相同的目录名)
Name //属性获取目录的名字
parent //属性父级目录

3、静态类和非静态类的区别

静态类非静态类
用static修饰不用static修饰
只包含静态成员可包含静态成员
不可以包含实例成员可以包含实例成员
使用类名调用静态成员实例对象调用非静态成员
不能被实例化可以被实例化
不能包含实例构造函数包含实例构造函数

注意:使用static修饰的类也不能够被继承。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值