winform读取文件夹的文件

WinForm 读取本地文件的方法

在 WinForm 应用程序中,我们经常需要读取本地文件的内容,本文将介绍几种常用的方法来实现这个功能。

winform读取文件夹的文件

使用 OpenFileDialog 控件

OpenFileDialog 是一个对话框控件,用于让用户选择文件,我们可以使用它来获取用户选择的文件路径,然后根据该路径读取文件内容,以下是如何使用 OpenFileDialog 的示例代码:

using System;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "文本文件 (*.txt)|*.txt|所有文件 (*.*)|*.*";
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                string filePath = openFileDialog.FileName;
                string fileContent = File.ReadAllText(filePath);
                MessageBox.Show("文件内容为:" + fileContent);
            }
        }
    }
}

使用 StreamReader 类

StreamReader 是一个用于读取字符流的类,它可以从文件或字符串中读取文本,我们可以使用它来读取本地文件的内容,以下是如何使用 StreamReader 的示例代码:

winform读取文件夹的文件

using System;
using System.IO;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button2_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "文本文件 (*.txt)|*.txt|所有文件 (*.*)|*.*";
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                string filePath = openFileDialog.FileName;
                using (StreamReader reader = new StreamReader(filePath))
                {
                    string fileContent = reader.ReadToEnd();
                    MessageBox.Show("文件内容为:" + fileContent);
                }
            }
        }
    }
}

使用 FileStream 类和 BinaryReader 类(高级方法)

如果需要对大文件进行高效处理,可以使用 FileStream 类和 BinaryReader 类,这种方法允许我们逐块读取文件内容,而不是一次性将整个文件加载到内存中,以下是如何使用这两种类的示例代码:

using System;
using System.IO;
using System.Windows.Forms;
using System.Runtime.InteropServices; // 需要添加此引用以使用 SetFilePointerEx 函数(仅限 Windows XP/2003)
using System.Drawing; // 需要添加此引用以使用 Image.FromStream 方法(仅限 Windows XP/2003)不建议在此方法中使用此引用,因为它会增加内存消耗并降低性能,但在某些特殊情况下,可能需要使用此方法,请谨慎使用。-->SetLastError(ERROR_SUCCESS);//定义一个错误码变量SetLastError函数是Windows API中的一个函数,用于存储系统最后一次发生的错误的数值信息,在这里定义一个SetLastError函数,并将其返回值设置为ERROR_SUCCESS,表示没有错误发生。-->int size=new FileInfo(filename).Length;//获取文件大小int offset=0;//定义偏移量size=size+offset;//计算实际大小while (offset<size) //循环读取每个字节{byte[] b=new byte[4096];int readSize=0;try {readSize=stream.Read(b,0,b.Length);if (readSize>0) stream.Seek(offset, SeekOrigin.Begin);else break;offset+=readSize;} catch (Exception ex) {MessageBox.Show("读取文件时出错:"+ex.Message);break;}}string str=Encoding.Default.GetString(b);MessageBox.Show("读取到的文件内容为:"+str);//释放资源stream.Close();//关闭流Marshal.ReleaseComObject(stream);//释放COM对象stream=null;//将流对象置空-->private void button3_Click(object sender, EventArgs e)//定义按钮点击事件{OpenFileDialog openFileDialog=new OpenFileDialog();openFileDialog.Filter="文本文件(*.txt)|*.txt|所有文件(*.*)||*";if (openFileDialog.ShowDialog()==DialogResult.OK)//判断是否选择了文件string filename=openFileDialog.FileName;using (System.Diagnostics.Process process=new System.Diagnostics.Process()){process.StartInfo.UseShellExecute=false;process.StartInfo.RedirectStandardOutput=true;process.StartInfo.FileName="C:\\WINDOWS\\system32\type\\"+filename;process.Start();string result="";while (!process.StandardOutput.EndOfStream)//循环读取输出结果result+=process.StandardOutput.ReadLine();MessageBox.Show("读取到的文件内容为:"+result);process.WaitForExit();process.Close();}Marshal.ReleaseComObject(stream);//释放COM对象stream=null;//将流对象置空}-->相关问题与解答:如何判断文件是否存在?答:可以使用 FileInfo 类的 Exists 属性来判断文件是否存在,bool isExist = new FileInfo("filePath").Exists;if (isExist) { MessageBox.Show("文件存在");} else { MessageBox.Show("文件不存在");} 如何关闭打开的文件?答:在使用完 FileStream、BinaryReader、StreamReader 等类后,应调用 Close、Dispose 或 ReleaseComObject 方法来关闭打开的文件,stream.Close(); stream = null; Marshal.ReleaseComObject(stream); 如何避免重复打开同一个文件?答:在使用完 FileStream、BinaryReader、StreamReader 等类后,应调用 Close、Dispose 或 ReleaseComObject 方法来关闭打开的文件,这样可以确保不会重复打开同一个文件。

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/162959.html

(0)
K-seoK-seoSEO优化员
上一篇 2023年12月24日 17:31
下一篇 2023年12月24日 17:32

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入