我希望能够读取特定文件夹中的文本文件,并将其显示在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);
}
答案 0 :(得分:0)
似乎已经调用了fileSystemWatcher_Changed之类的文件来再次从文件中获取内容,即使文件消失了也是如此。尝试确保此行-
已删除文件后未调用richTextBox1.Text = File.ReadAllText(path + "event.txt");
-在执行该行之前检查文件是否存在。我还建议锁定此代码的两个部分-
1)检查文件是否存在并从中读取文件。
2)检查文件是否存在并将其删除。