首页 > 代码库 > 文件操作
文件操作
通常来讲,用C#程序读写一个文件需要以下5个基本步骤
(1):创建文件流
(2):创建阅读器或者写入器
(3):执行读写操作
(4):关闭阅读器或者写入器
(5):关闭文件流
示例:
//写入文本文件
private void btnWrite_Click(object sender, EventArgs e)
{
string path = txtFilePath.Text;
string content = txtContent.Text;
if(path.Equals(null) || path.Equals(""))
{
MessageBox.Show("文件路径不能为空");
return;
}
try
{
//创建文件流
FileStream myfs = new FileStream(path, FileMode.Create);
//创建写入器
StreamWriter mySw = new StreamWriter(myfs);
//将录入的内容写入文件
mySw.Write(content);
//关闭写入器
myfs.Close();
MessageBox.Show("写入成功");
}
catch(Exception ex)
{
catch(Exception ex)
{
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
文件流:
1.创建文件流
读写文件的第一步是创建一个文件流,流是一个用于数据传输的对象。示例1中使用的文件流是FileStream类,它主要用来读写文件中的数据,在创建一个文件流时,需要再它的构造函数中指定参数。
语法:
FileStream 文件流对象 = new FileStream (string filePath, FileMode fileMode);
其中filePath用于指定要操作的文件,而fileMode指定打开文件的模式,它是一个枚举类型(FileMode). 该枚举的常用成员如下:
Create:用指定的名称新建一个文件,如果文件存在,则改写旧文件.
CreateNew: 新建一个文件.如果文件存在会发生异常,提示文件已经存在,
Open:打开一个文件,使用这个枚举值时,指定的文件必须存在,否则会发生异常。
OpenOrCreate:OpenOrCreate与Open成员类似,只是如果文件不存在,则用指定的名称新建一个文件并打开它。
Append:打开现有文件,并在文件末尾追加内容.
2.关闭文件流
1.StreamWriter写入器
创建文件流之后,我们要创建读取器或者写入器,StreamWriter类称为写入器,用于将数据写入文件流,只要将创建好的文件流传入,就可以创建它的示例,例如:
StreamWriter mySw = new StreamWriter(myfs);
创建好写入器后,就可以调用它的方法将要写入的内容写入文件流其中的主要方法如下:
Stream Writer.Write():用于写入流,这个流就是我们创建好的流。
StreamWriter.WriteLine():用于写入一行数据,写入某些数据后跟换行符。
StreamWriter.Close():用于关闭写入器
2.StreamReader读取器
StreamReader主要用于读取流中的数据,它主要包含以下几种方法
StreamReader.ReadLine():读取文件流中的一行数据,并返还字符串。
StreamReader.ReadToEnd():从当前位置读到末尾,返还字符串
StreamReader.Close():用于关闭读取器
解决乱码问题
用StreamReader读取文件中的中文文本,有时会产生乱码问题。这并不是因为C#语言有问题,而是因为不同的文件编码格式可能不同,如果在编码时给文件读取器对象指定对应的编码格式,问题就迎刃而解了.
小型资源管理器概述:
文件存在性判断,除了新建文件之外,基本上都需要有存在性判断
异常处理,如正要操作的文件可能被其他进程占用
小结
读写文件的5个步骤:创建文件流、创建读写器、读写文件、关闭读写器、关闭文件流。
文件流的类是FileStream,在创建一个文件流时,需要指定操作文件的路径、文件的打开方式和文件的访问方式
StreamWriter是一个写入器,StreamReader是一个读取器
File类用于对文件进行操作,如复制、移动、删除等,Directory类用于对文件夹进行操作,它们都是静态类。
静态类值包含静态成员,非静态类可以包含静态成员:静态类不能包含实例成员,非静态类可以包含实例成员;静态类使用类名访问成员,静态类不能包含实例成员,非静态类使用它的实例访问成员。
FileInfo类与File类功能类型,也可以完成对文件的基本操作。不同的是File类不可以实例化对象。如果打算多次重用某个文件对象,可以考虑使用FileInfo类,因为并不总是需要
安全检查的。
DirectoryInfo类与Directory类功能类似,可以完成对文件夹的基本操作。如果打算多次重用某个目录对象,可以考虑使用DirecoryInfo类的实例方法.
}
文件操作