文件流
创建文件流
读写文件的第一步就是创建文件流,流是一个用于数据传输的个对象,它是FileStream类型,在创建一个文件流是需要在他的构造中指定参数
语法:
FileStream 文件流对象=new FileStream( String filePath,FileMode fileMode);
其中filePath用于指定要操作的文件,fileMode用于指定文件的打开方式,它是一个枚举类型,
fileMode的常用成员如下:
- Create:用指定的名称新建一个文件,如果文件已存在则覆盖原有的文件
- CreateNew:新建一个文件,如果文件已存在会报异常提示文件已存在
- Open:打开一个文件,使用这个枚举是文件必须已存在,否则会报异常
- OpenOrCreate:与Open成员类似,如果文件不存在则用指定的名称新建一个文件并打开它
- Appen:打开现有文件,并在末尾追加新的内容。
小提示:“”在C#中表示转译,所以我们在写文件路径是不能直接以这样的形式写(“D:files”),我们可以在“”号的前面加一个@符号来取消转译,也可以用”\”来代替“”
文件读写器
创建文件流之后,我们要创建读取器或者写入器,StreamWrite被称为写入器只要将创建好的文件流传入就可以创建它的实例
StreamWriter sw=New StreamWriter(文件流对象);
创建好写入器之后我们就可以调用他的方法向文件类文件流,其主要方法如下:
- StreamWriter.Write():用于写入流,这个流是我们创建好的流
- StreamWriter.WriteLine():用于写入一行数据,写入某些数据后跟换行符
- StreamWriter.Close():用于关闭写入器
注意:当写入器使用完毕后一定要调用Close()方法关闭写入器,否则会发生要写的内容无法写入文件的情况。
StreamReader读取器
StreamReader主要用于读取流中的数据,它主要包含以下方法:
- StreamReader.ReadLIne():读取文件流中的一行数据,并返回字符串
- StreamReader.ReadToEnd():从当前位置读到末尾,返回字符串
- StreamReader.Close();用于关闭读取器。
解决乱码问题
用StreamReader读取文件中的中文文本,有事会出现乱码问题。这并不是C#语言的问题,有可能是因为编码格式的问题。在读取文件是指定对应的编码格式已解决乱码问题。
如:StreamReader myfil=new StreamReader(文件流对象,Encoding.Default);
Encoding的静态成员指定编码格式。如:
- Default表示获取操作系统当前的编码格式
- UTF-8表示获取UTF-8格式的编码
文件和目录操作
File和Directory类
File类的常用方法
返回值类型 | 方法名称 | 说明 |
bool | Exists(string path) | 用于检查指定文件是否存在 |
void | Copy(string sourceFilePath,string destinationFilePath) | 将指定路径的原文件中的内容复制到目标文件中,如果目标文件不存在,则在指定路径中新建一个文件 |
void | Move(string sourceFilePath,string destFileName) | 将制定问价移动到一个新的路径 |
void | Delete(string path) | 删除指定的文件,如果指定的文件不存在,则不引发异常 |
File类对文件进行操作而Directory类对目录进行操作(文件夹)
Directory类的常用方法
返回值类型 | 方法名称 | 说明 |
bool | Exists(string path) | 用于检查指定文件夹在磁盘上是否存在 |
void | Move(string sourceDirName,string destDirName) | 用于将文件或目录文件及其内容移到新位置 |
void | Delete(string path,bool recursive) | 删除指定目录,如果recursive值为true,则删除子目录中的所有目录内容 |
静态类和静态方法
静态类只含有静态方法,不能使用new关键字创建静态类的实例。
静态类与非静态类的区别
静态类 非静态类 用static修饰 不用static修饰 只包含静态成员 可以包含静态成员 不可以包含实例成员 可以包含实例成员 使用类名调用静态成员 使用实例对象调用非静态成员 不能被实例化 可以被实例化 不能包含实例构造函数 包含实例构造函数