1. 读取文件的方法:
1. 声明一个文件流: 目的是为了内存与文件之间的桥梁,可以进行数据的往来。
FileStream fs = new FileStream(filename,FileMode.Open,FileAccess.Read,FileShare.None);
4个参数的意义 文件名 、 打开文件的方式 、 对文件进行什么样的操作 、 是否允许其他进程共享(值为FileShare.None的时候,谢绝共享) 。注意,第2个参数要与第3个参数配对, 例如 Open 对应 Read , Create 对于 Write
2. 创建读取器: 用于操作文件流,来达到读取文件的目的。
StreamReader sr = new StreamReader(fs,Encoding.Default);
3. 读取文件操作: 用于EndOfStream 指示是否读到流的末尾
ReadToEnd() 一次读取文件中所有的内容
ReadLine() 分行读取
//str = sr.ReadToEnd(); 一次读取到底
//一行一行读取
while(sr.EndOfStream == false)
{
string line = sr.ReadLine();
str += (line + "
");
}
4. 关闭读取器:
sr.Close();
5. 释放所操作的文件流对象
fs.Close();
2. 写入文件的方法:
1. 声明一个文件流:目的是为了内存与文件之间的桥梁,可以进行数据的往来。做法与读取文件时相似。
FileStream fs = new FileStream(myFilePath, FileMode.Create);
2. 创建写入器:用于操作文件流,来达到写入文件的目的。
StreamWriter sw = new StreamWriter(fs,Encoding.Default);
3. 写入文件操作: 一般采用 Write() 方法
sw.Write(str);
4. 关闭写入器:
sw.Close();
5. 释放所操作的文件流对象
fs.Close();
3. 为什么要关闭读写器、文件流
为什么要关闭文件流后,文件才会全部写入?如果写人文件后,不关闭写入器,文件中会出现没有数据或者数据不全的情况。
1.写入器先将数据写入到文件流所指向的内存中(也就是一个缓冲区),只有当这块内存被写满的时候,才会把内存中的数据写入到磁盘上,也就是将数据写入到文件里面。
2.当我们关闭文件读写器的时候,缓冲区中剩下的数据就会被写入到文件中。如果之前读取到的数据没有把缓冲区写满,则文件中没有数据;反之文件中的数据不全。
3.对文件进行操作后,一定要关闭读写器、文件流,因为这些读写器、文件流占用了系统资源。
4. 注意
1. 当我们打开一个文件,如果出现英文正常,汉字为乱码,首先要考虑的是编码问题。
读取文件时采用的编码和写入文件的时候采用的编码要一致。
2. 当我们在声明文件流、读写器的时候,可以先写好关闭文件流、读写器的操作。因为有可能,对文件的操作比较复杂,当我们完成操作后,会忘记关闭文件流、读写器。
3. 获取当前应用程序所在的文件路径: Application.StartupPath
5. 几种与文件有关的对话框
1. 提示用户打开文件的对话框 OpenFileDialog
常用属性:
Multiselect bool类型,是否可以在对话框中选中多个文件。
InitialDirectory 对话框打开时显示的初始目录。
SafeFileName 对话框中所选文件的文件名和扩展名。 文件名不包含路径。
Filter 获取或设置当前文件名筛选器字符串,该字符串决定对话框的“另存为文件类型”或“文件类型”框中出现的选择内容。 例如, “可执行程序|*.exe|word文档|*.doc” ;
FileName 获取或设置一个包含在文件对话框中选定的文件名的字符串。
2. 提示用户保存文件的对话框 SaveFileDialog
常用属性: 与OpenFileDialog相同
3. 提示用户选择文件夹的对话框 FolderBrowserDialog
常用属性:
Description 获取或设置对话框中在树视图控件上显示的说明文本。
SelectedPath 获取或设置用户选定的路径。