咱们知道,程序中的数据一般保存在内存中,当程序关闭时其对应的内存空间就会被释放掉,也就是说咱们在程序中所做的操做或对数据的更改会在程序结束时自动删除,没办法永久的保存,若是你想永久的保存这些数据,则能够考虑使用数据库或文件对这些数据在磁盘上进行存储,数据库适合存储比较庞大的数据量当数据比较简单时使用数据库存储操做复杂,且成本较高。而文件则适合对简单数据进行存储。好比不少程序的用户配置信息都保存在文件中!数据库
一般来说,用C#程序对鞋一个文件须要如下5个步骤框架
注意:在对文件进行操做以前须要引入IO命名空间函数
using System.IO;
这个命名空间用于对文件和文件流的处理编码
读写文件的第一步就是建立文件流,流是一个用于数据传输的个对象,它是FileStream类型,在建立一个文件流是须要在他的构造中指定参数spa
FileStream 文件流对象=new FileStream( String filePath,FileMode fileMode);操作系统
其中filePath用于指定要操做的文件,fileMode用于指定文件的打开方式,它是一个枚举类型,code
fileMode的经常使用成员以下:对象
小提示:“\”在C#中表示转译,因此咱们在写文件路径是不能直接以这样的形式写(“D:\files”),咱们能够在“”号的前面加一个@符号来取消转译,也能够用”\\”来代替“\”blog
建立文件流以后,咱们要建立读取器或者写入器,StreamWrite被称为写入器只要将建立好的文件流传入就能够建立它的实例内存
StreamWriter sw=New StreamWriter(文件流对象);
建立好写入器以后咱们就能够调用他的方法向文件类文件流,其主要方法以下:
注意:当写入器使用完毕后必定要调用Close()方法关闭写入器,不然会发生要写的内容没法写入文件的状况。
StreamReader主要用于读取流中的数据,它主要包含如下方法:
用StreamReader读取文件中的中文文本,有事会出现乱码问题。这并非C#语言的问题,有多是由于编码格式的问题。在读取文件是指定对应的编码格式已解决乱码问题。
如:StreamReader myfil=new StreamReader(文件流对象,Encoding.Default);
Encoding的静态成员指定编码格式。如:
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修饰 只包含静态成员 能够包含静态成员 不能够包含实例成员 能够包含实例成员 使用类名调用静态成员 使用实例对象调用非静态成员 不能被实例化 能够被实例化 不能包含实例构造函数 包含实例构造函数
提供实例方法的文件和目录操做
前面的File类和Directory类都用静态方法操做文件和目录,其实.NET框架提供了用实例方法操做文件和目录的类
FileInfo、DirectoryInfo和File、Directory相似均可以完成一样的对文件或目录的操做,可是FileInfo和DirectoryInfo类必须实例化对象,使用对象调用方法!