点击按钮时记录删除的文件?记录所有文件(已删除和未删除)

本文关键字:删除 记录 文件 按钮 | 更新日期: 2023-09-27 18:10:11

我正在编写一个应用程序来删除超过6个月的测试文件夹上的文件,应用程序运行良好,因为我已经测试了它,我想创建一个日志文件来跟踪删除文件的名称,用于审计目的。

但是下面的脚本确实记录了所有的文件(删除和未删除),我所需要的只是记录日期和时间以及删除文件的名称。

谢谢

脚本如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace Delete_PDF_Files
{
    public partial class Form1 : Form
    {
        private string strLogText;
        public Form1()
        {
            InitializeComponent();
        }
        private void btnCheck_Click(object sender, EventArgs e)
        { 
            // check the number of file in the CPS directory on S drive
            listBox1.Items.Clear();
            string[] files = System.IO.Directory.GetFiles(@"C:'test'"); // @"S:'CPS Papers'"
            this.listBox1.Items.AddRange(files);
            textBox1.Text = listBox1.Items.Count.ToString();
        }
        // delete button to delete files over 6 months from CPS folder
        private void btnDelete_Click(object sender, EventArgs e)
        {
            string[] files = System.IO.Directory.GetFiles(@"C:'test'"); //S:'CPS Papers  test C:'test'
            foreach (string file in files)
            {
                System.IO.FileInfo fi = new System.IO.FileInfo(file);
                if (fi.LastWriteTime < DateTime.Now.AddMonths(-6))
                    fi.Delete();
                // Create a writer and open the file: //C:'test'log
                System.IO.StreamWriter log;
                if (!System.IO.File.Exists("C:''test''log''logfile.txt"))
                {
                    log = new System.IO.StreamWriter("C:''test''log''logfile.txt");
                }
                else
                {
                    log = File.AppendText("C:''test''log''logfile.txt");
                }
                // Write to the file:
                log.WriteLine(DateTime.Now); 
                log.WriteLine(strLogText);
                log.WriteLine();
                log.WriteLine();
                // Close the stream:
                log.Close();
            }
        }
        // Exit button
        private void btnExit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
}

点击按钮时记录删除的文件?记录所有文件(已删除和未删除)

用以下代码替换您的删除代码:

private void btnDelete_Click(object sender, EventArgs e)
    {
        string[] files = System.IO.Directory.GetFiles(@"C:'test'"); //S:'CPS Papers  test C:'test'
        foreach (string file in files)
        {
            System.IO.FileInfo fi = new System.IO.FileInfo(file);
            //if (fi.LastAccessTime < DateTime.Now.AddMonths(-3))
            if (fi.LastWriteTime < DateTime.Now.AddMonths(-6))
            {
                fi.Delete();
                using (StreamWriter writer = File.AppendText("C:''test''log''logfile.txt"))
                {
                    writer.Write("File: " + file + " deleted at : "+DateTime.Now);
                    writer.WriteLine("----------------------------------------------------");
                    writer.Flush();
                    writer.Close();
                }
            }
        }
    }

与其使用自定义日志,我建议您使用像Log4Net这样的好库。为什么要重新发明轮子?我知道它有一个小的学习曲线时间,但一旦你了解你可以很容易地将它集成到任何新的项目。

只要在你的app.config中添加一个config部分和几行代码,你就可以开始了。

关于Log4Net的一个很好的教程可以在这里找到