/// <summary>
/// 选中文本文件,并打开读取。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
//当所选文件不存在时给出警告提示。
this.openFileDialog1.CheckFileExists = true;
//在从对话框返回之前检查指定路径是否存在
this.openFileDialog1.CheckPathExists = true;
//是否添加默认文件扩展名
this.openFileDialog1.AddExtension = true;
//设置默认扩展文件名,当用户键入不带扩展名的文件名时自动添加上默认扩展名
this.openFileDialog1.DefaultExt = ".txt";
//设置文件类型筛选规则
//组与组之间用"|"分隔,每组中文件类型与扩展名用"|"分隔,多个文件类型用";"分隔
this.openFileDialog1.Filter = "文本文件|*.txt|图片文件|*.png;*.gif;*.jpg;*.jpeg;*.bmp";
//设置是否支持多选
this.openFileDialog1.Multiselect = false;
//设置文件对话框初始目录
this.openFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
//设置对话框标题
this.openFileDialog1.Title = "选择文件: ";
if (this.openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
this.tbFile.Text = this.openFileDialog1.FileName;
/*
文本文件是一种典型的计算机文件,其扩展名一般为.txt主要包括文本内容,
可能包含少量的格式,可使用记事本程序打开和编辑。还有一些扩展名为.config,
.ini,.xml, .bat,.log,.cs,.html,.php,.js的文件也属于文本文件范畴。
读取文本文件主要有FileStream、StreamReader、ReadAllText()、ReadAllLines()等四种方法
前两种是基础方法,各种编程语言都有类似方法,而后两种是.NET2.0新增加的功能,只适用于.NET
ReadAllText()、ReadAllLines()比较简单,遇到更为复杂的情形时可使用FileStream或StreamReader更合适
*/
if (!File.Exists(this.tbFile.Text)) //先判断文件是否存在
return;
//读出文件数据。
#region 使用FileStream读取文本文件
#if false
//以只读方式打开文本文件
using (FileStream fs = new FileStream(this.tbFile.Text, FileMode.Open, FileAccess.Read))
{
//逐字节读取
byte[] bytes = new byte[fs.Length];
int numBytesToRead = (int)fs.Length;//要读取的字节长度
int numBytesRead = 0;//已读取的数据长度,也就是偏移量
while (numBytesToRead > 0)
{
int n = fs.Read(bytes,numBytesRead,numBytesToRead);
if (n == 0)
break;
numBytesRead += n;
numBytesToRead -= n;
}
numBytesToRead = bytes.Length;
//以UTF-8编码解码
//string content = Encoding.UTF8.GetString(bytes);
//以GBK方式读取
string content = Encoding.GetEncoding("GBK").GetString(bytes);
fs.Close();
this.textBox2.AppendText(content);
//MessageBox.Show(content);
}
#endif
#endregion 使用FileStream读取文本文件
#region 使用StreamReader读取文本文件
#if false
//以某种字符集编码打开文件并逐行读取,最后关闭StreamReader对象
StreamReader sr = new StreamReader(this.tbFile.Text,Encoding.GetEncoding("GBK"));
string line;
//逐行读取
while ((line = sr.ReadLine()) != null)
{
this.textBox2.AppendText(line);
}
sr.Close();
#endif
#endregion 使用StreamReader读取文本文件
#region 使用ReadAllText读取文本文件
#if false
//默认以UTF-8编码读取
//string content = File.ReadAllText(this.tbFile.Text);
//以汉字GBK编码读取
string content = File.ReadAllText(this.tbFile.Text,Encoding.GetEncoding("GBK"));
this.textBox2.AppendText(content);
#endif
#endregion 使用ReadAllText读取文本文件
#region 使用ReadAllLines读取文本文件
#if true
//读取每一行,ReadAllLines读取完后会自动关闭文件
foreach (var line in File.ReadAllLines(this.tbFile.Text,Encoding.GetEncoding("GBK")))
this.textBox2.AppendText(line);
#endif
#endregion 使用ReadAllLines读取文本文件
}
(FileSystem)使用OpenFileDialog选中文本文件,并打开读取
最新推荐文章于 2021-02-06 15:43:08 发布