如何读取文件夹中的文本文件并显示在richTextBox中,然后删除文件并读取放置在同一文件夹中的下一个文件

时间:2018-10-31 13:51:21

标签: c#

我希望能够读取特定文件夹中的文本文件,并将其显示在richTextBox中,并在读取后删除该文件,并保留内容,直到将新文件放置在该文件夹中为止。但是现在发生的事情是,它非常简短地显示了内容,并且应用程序崩溃,提示它无法在该特定文件夹中找到文件。

这是我目前的代码:

static string path = @"C:\TEST\";
    private FileSystemWatcher fileSystemWatcher;

InitializeComponent();

        fileSystemWatcher = new FileSystemWatcher(path);
        fileSystemWatcher.Filter = "*.txt";
        fileSystemWatcher.Changed += new FileSystemEventHandler(fileSystemWatcher_Changed);
        fileSystemWatcher.EnableRaisingEvents = true;
    }

    private void fileSystemWatcher_Changed(object sender, FileSystemEventArgs e)
    {

        RichTextBox.CheckForIllegalCrossThreadCalls = false;
        richTextBox1.Text = File.ReadAllText(path + "event.txt");
        try
        {
            string filename = @"C:\TEST\event.txt";
            if (File.Exists(filename))
            {
                File.Delete(filename);
            }
            else
            {
                Debug.WriteLine("File does not exist.");
            }
        }
        catch (Exception f)
        {
            Console.WriteLine(f);
        }

谢谢

更新

我进行了一些更改,现在可以工作,但是我需要它来删除文件。 (目前尚未将其删除)

RichTextBox.CheckForIllegalCrossThreadCalls = false;
        try
        {
            string filename = @"C:\AMS\event.int";
            if (File.Exists(filename))
            {
                richTextBox1.Text = File.ReadAllText(filename);
            }
            else
            {
                File.Delete(filename);
            }
        }
        catch (Exception f)
        {
            Console.WriteLine(f);
        }

1 个答案:

答案 0 :(得分:0)

似乎已经调用了fileSystemWatcher_Changed之类的文件来再次从文件中获取内容,即使文件消失了也是如此。尝试确保此行- 已删除文件后未调用richTextBox1.Text = File.ReadAllText(path + "event.txt");-在执行该行之前检查文件是否存在。我还建议锁定此代码的两个部分-

1)检查文件是否存在并从中读取文件。

2)检查文件是否存在并将其删除。