X 时间后清除文件内容

Clear File Contents After X Amount Of Time

我需要一种在一段时间后清除文本文件的方法。这是我目前所拥有的

List<string> previousWeaponList = new StreamWriter("PreviousList.txt");

所以这是在请求武器后将先前的武器列表读入文件,武器被写入该列表。一旦我这样做了,我就有了一个文件,如果我保存每一个请求,它会很快变满,这就是为什么我需要每隔 X 时间清理它。

这样可以吗?

private Thread fileCleaner;
public void FileCleaner()
{
    fileCleaner = new Thread(new ThreadStart(this.Run))
}

然后只需要一个 运行 函数,如果它是真的,它只会写入文件,然后使用

Thread.Sleep();

我听说使用 Threads 来节省时间不是一个好主意,但我不是这方面的专家。

使用 Timer,并将其 Elapsed 事件的回调设置为文件清理方法。

var timer = new Timer(10000);
timer.Elapsed += (s, e) => File.Delete("C:\your_file.txt");
timer.Enabled = true;

如果您需要停止计时器,请将 timer.Enabled 设置为 false

这里有非常相似的问题和答案:

Delete files from the folder older than 4 days

相关回答:

I would recommend using a System.Threading.Timer for something like this. Here's an example implementation:

System.Threading.Timer DeleteFileTimer = null;

private void CreateStartTimer()
{
 TimeSpan InitialInterval = new TimeSpan(0,0,5);
 TimeSpan RegularInterval = new TimeSpan(5,0,0);

 DeleteFileTimer = new System.Threading.Timer(QueryDeleteFiles, null, 
        InitialInterval, RegularInterval);

}

private void QueryDeleteFiles(object state)
{
  //Delete Files Here... (Fires Every Five Hours).
  //Warning: Don't update any UI elements from here without Invoke()ing
  System.Diagnostics.Debug.WriteLine("Deleting Files...");
}

private void StopDestroyTimer()
{
  DeleteFileTimer.Change(System.Threading.Timeout.Infinite,
  System.Threading.Timeout.Infinite);

  DeleteFileTimer.Dispose();
}

This way, you can run your file deletion code in a windows service with minimal hassle.