发布者:唯众
布时间:2020-12-21 13:56:41
点击量:
任务描述
选择菜单“打开”,则弹出“打开文件”对话框,要求用户选择要打开的文件,文件类型自动选择为“.txt”文件,当用户选择要打开的文本文件,点击“打开”按钮后,该文件内容自动显示到主窗口。
知识引入
- C#命名空间System.IO
System.IO命名空间是C#对文件、目录、文件流操作的支持类库。System.IO命名空间支持的主要类如表7-1所示:
表7-1 System.IO支持类表
类别 |
主要类 |
字节流 |
Stream、BufferedStream、MemoryStream、UnmanagedMemoryStream、FileStream |
二进制流 |
BinaryReader、BinaryWriter |
字符流 |
TextReader、TextWriter、StreamReader、StreamWriter、StringReader、StringWriter |
文件操作 |
File、Path、Directory、FileSystemInfo、FileInfo、DirectoryInfo、DriveInfo |
IO异常 |
IOException、FileLoadException、DriveNotFoundException、FileNotFoundException、DirectoryNotFoundException、PathTooLongException、EndOfStreamException |
IO枚举类型 |
FileAccess、FileAttributes、FileOptions、FileShare、FileMode、SearchOption、SeekOrigin、DriveType |
- OpenFileDialog对话框
功能:弹出打开文件对话框
主要属性:
InitialDirectory:对话框的初始目录
Filter: 获取或设置当前文件名筛选器字符串
FileName:第一个在对话框中显示的文件或最后一个选取的文件
Title:对话框标题
【
例7-1】
新建windows窗体应用程序,添加一个“打开”按钮和一个文本框,当点击“打开”按钮后,弹出文件打开对话框,文件目录定位到C盘根目录,文件类型筛选为“.txt”文件,当选择一个文件后,将文件目录及文件名显示到文本框。程序运行效果如图7-7所示:
图7-7 运行效果图
新建windows窗体应用程序,添加控件并设置属性如表7-2所示:
表7-2 控件及属性设置表
控件 |
属性 |
值 |
Button |
Text |
打开 |
Button |
Name |
btnFileOpen |
TextBox |
Name |
txtFileName |
编写btnFileOpen的click事件代码如下:
private void btnFileOpen_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.InitialDirectory = "c:\\";
openFileDialog.Filter = "TXT文件|*.txt";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
string fName = openFileDialog.FileName;
txtFileName.AppendText(fName);
}
}
- 字符流的读取
StreamReader类: 以字符为单位的数据读取操作
主要方法:
StreamReader(Stream stream): 以一个文件流作参数创建StreamReader实例对象
StreamReader(string path):以一个文件作参数创建StreamReader实例对象
例:StreamReader sr = new StreamReader(“c:\\1.txt”);
ReadLine():从StreamReader实例对象中读取一行。
Read():从StreamReader实例对象中读取一个字符。
ReadToEnd():从StreamReader实例对象中读取所有内容。
Close( ):关闭文件流。
【
例7-2】
新建windows窗体应用程序,添加一个“打开”按钮和一个文本框,当点击“打开”按钮后,弹出文件打开对话框,文件目录定位到C盘根目录,文件类型筛选为“.txt”文件,当选择一个文件后,将文件内容显示到文本框。程序运行效果如图7-8所示:
图7-8 运行效果图
新建windows窗体应用程序,添加控件并设置属性如表7-3所示:
表7-3 控件及属性设置表
控件 |
属性 |
值 |
Button |
Text |
打开 |
Button |
Name |
btnFileOpen |
TextBox |
Name |
txtContent |
TextBox |
Multiline |
true |
编写btnFileOpen的click事件代码如下:
private void btnFileOpen_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.InitialDirectory = "c:\\";
openFileDialog.Filter = "TXT文件|*.txt";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
try
{
string openFileName = openFileDialog.FileName;
StreamReader sr = new StreamReader(openFileName);
txtContent.Text = sr.ReadToEnd();
sr.Close();
}
catch (Exception)
{
}
}
}
任务实现
- 窗体界面实现
新建windows窗体应用程序,添加控件并设置属性如表7-4所示:
表7-4 控件及属性设置表
控件 |
属性 |
值 |
Form |
Text |
记事本 |
Form |
Size |
600,500 |
Form |
AutoSize |
true |
Form |
StartPosion |
CenterScreen |
TextBox |
Name |
txtContent |
TextBox |
Multiline |
true |
添加菜单控件Menustrip1并按要求设计主菜单及二级菜单内容,添加对话框控件fontDialog1、openFileDialog1、saveFileDialog1。
- “打开”菜单功能实现
“打开”菜单click事件代码编写如下:
private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)
{
openFileDialog1.Filter = "TXT文件|*.txt";
openFileDialog1.FileName = "";
openFileDialog1.ShowDialog();
if (openFileDialog1.FileName != null)
{
try
{
string openFileName = openFileDialog1.FileName;
StreamReader sr = new StreamReader(openFileName);
textContent.Text = sr.ReadToEnd();
sr.Close();
}
catch (Exception)
{
}
}
}
任务小结
- 命名空间System.IO支持C#的文件操作。
- 文件流包括字符流、字节流、二进制流。
- 文件操作需要进行异常处理。
- 文件流使用完后需要关闭。