使用StreamReader和文本文件

时间:2012-04-21 15:31:37

标签: c#

我想在按钮点击事件上放置一个测试循环。当我单击此按钮时,它会读取文本文件的内容,但我希望它弹出显示“无法读取文件”的错误消息,如果它不是文本文件.... 这是我的代码

private void button3_Click(object sender, EventArgs e)
{
    StreamReader sr = new StreamReader(textBox1.Text);
    richTextBox1.Text = sr.ReadToEnd();
    sr.Close();
}

我该怎么办呢?

2 个答案:

答案 0 :(得分:2)

一些if语句和名称空间System.IO将会这样做

string filename = textBox1.Text;
if (Path.GetExtension(filename).ToLower()) == ".txt") {
    if (File.Exists(filename)) {
        // Process the file here
    } else {
        MessageBox.Show("The file does not exist");
    }
} else {
    MessageBox.Show("Not a text file");
}

答案 1 :(得分:1)

不是最好的代码,但应该有效。理想情况下,您将逻辑分为两个方法,一个检查文件存在的函数,一个文本文件(返回一个bool),另一个读取内容,如果检查函数返回true并用文本框填充内容。

编辑:这样更好:

    private void button3_Click(object sender, EventArgs e)
    {
        string filePath = textBox1.Text;
        bool FileValid = ValidateFile(filePath);

        if (!IsFileValid)
        {
            MessageBox.Show(string.Format("File {0} does not exist or is not a text file", filePath));
        }
        else
        {
            textbox2.Text = GetFileContents(filePath);
        }
    }

    private bool IsFileValid(string filePath)
    {
        bool IsValid = true;

        if (!File.Exists(filePath))
        {
            IsValid = false;
        }
        else if (Path.GetExtension(filePath).ToLower() != ".txt")
        {
            IsValid = false;
        }

        return IsValid;
    }

    private string GetFileContents(string filePath)
    {
        string fileContent = string.Empty;

        using (StreamReader reader = new StreamReader(filePath))
        {
            fileContent = reader.ReadToEnd();
        }

        return fileContent;
    }