0

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

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

我该怎么办?

4

2 回答 2

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");
}
于 2012-04-21T15:44:04.653 回答
1

不是最好的代码,但它应该可以工作。理想情况下,您会将逻辑分为两种方法,一个检查文件是否存在的函数并且是一个文本文件(返回一个布尔值),另一个用于在检查函数返回 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;
    }
于 2012-04-21T15:47:49.467 回答