C#IO流文件操做

文件概述

咱们知道,程序中的数据一般保存在内存中,当程序关闭时其对应的内存空间就会被释放掉,也就是说咱们在程序中所做的操做或对数据的更改会在程序结束时自动删除,没办法永久的保存,若是你想永久的保存这些数据,则能够考虑使用数据库或文件对这些数据在磁盘上进行存储,数据库适合存储比较庞大的数据量当数据比较简单时使用数据库存储操做复杂,且成本较高。而文件则适合对简单数据进行存储。好比不少程序的用户配置信息都保存在文件中!数据库

如何对写文件

一般来说,用C#程序对鞋一个文件须要如下5个步骤框架

  1. 建立一个文件流
  2. 建立阅读器或写入器
  3. 执行读写操做
  4. 关闭阅读器或写入器
  5. 关闭文件流

注意:在对文件进行操做以前须要引入IO命名空间函数

using System.IO;

这个命名空间用于对文件和文件流的处理编码

文件流

建立文件流

读写文件的第一步就是建立文件流,流是一个用于数据传输的个对象,它是FileStream类型,在建立一个文件流是须要在他的构造中指定参数spa

语法:

FileStream 文件流对象=new FileStream( String filePath,FileMode fileMode);操作系统

其中filePath用于指定要操做的文件,fileMode用于指定文件的打开方式,它是一个枚举类型,code

fileMode的经常使用成员以下:对象

  • Create:用指定的名称新建一个文件,若是文件已存在则覆盖原有的文件
  • CreateNew:新建一个文件,若是文件已存在会报异常提示文件已存在
  • Open:打开一个文件,使用这个枚举是文件必须已存在,不然会报异常
  • OpenOrCreate:与Open成员相似,若是文件不存在则用指定的名称新建一个文件并打开它
  • Appen:打开现有文件,并在末尾追加新的内容。

小提示:“\”在C#中表示转译,因此咱们在写文件路径是不能直接以这样的形式写(“D:\files”),咱们能够在“”号的前面加一个@符号来取消转译,也能够用”\\”来代替“\”blog

文件读写器

建立文件流以后,咱们要建立读取器或者写入器,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修饰
只包含静态成员 能够包含静态成员
不能够包含实例成员 能够包含实例成员
使用类名调用静态成员 使用实例对象调用非静态成员
不能被实例化 能够被实例化
不能包含实例构造函数 包含实例构造函数

 

提供实例方法的文件和目录操做

前面的File类和Directory类都用静态方法操做文件和目录,其实.NET框架提供了用实例方法操做文件和目录的类

FileInfo、DirectoryInfo和File、Directory相似均可以完成一样的对文件或目录的操做,可是FileInfo和DirectoryInfo类必须实例化对象,使用对象调用方法!

相关文章
相关标签/搜索