C# FileSystemWatcher 监听文件变化显示到软件

你可以使用 FileSystemWatcher 类来监听目录中的文件变化,并获取最新的文件。下面是一个示例代码,用于监听特定目录的变化,并在有新文件生成时获取最新的文件。

示例代码

using System;
using System.IO;
using System.Linq;
using System.Windows.Forms;

public class FileWatcher
{
    private FileSystemWatcher watcher;
    private string directoryPath;
    private PictureBox pictureBox;

    public FileWatcher(string path, PictureBox pb)
    {
        directoryPath = path;
        pictureBox = pb;
        watcher = new FileSystemWatcher
        {
            Path = directoryPath,
            Filter = "*.*", // 监听所有文件类型
            NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite
        };

        watcher.Created += OnChanged;
        watcher.Changed += OnChanged;
        watcher.EnableRaisingEvents = true;
    }

    private void OnChanged(object source, FileSystemEventArgs e)
    {
        // 等待文件完全写入
        System.Threading.Thread.Sleep(100);

        // 获取最新的文件
        var latestFile = GetLatestFile(directoryPath);
        if (latestFile != null)
        {
            // 在 UI 线程上更新 PictureBox
            pictureBox.Invoke(new Action(() =>
            {
                pictureBox.ImageLocation = latestFile;
            }));
        }
    }

    private string GetLatestFile(string directoryPath)
    {
        var directoryInfo = new DirectoryInfo(directoryPath);
        var file = directoryInfo.GetFiles()
                                .OrderByDescending(f => f.LastWriteTime)
                                .FirstOrDefault();
        return file?.FullName;
    }
}

public class MainForm : Form
{
    private PictureBox pictureBox;
    private FileWatcher fileWatcher;

    public MainForm()
    {
        pictureBox = new PictureBox
        {
            Dock = DockStyle.Fill,
            SizeMode = PictureBoxSizeMode.Zoom
        };
        this.Controls.Add(pictureBox);

        string directoryPath = @"C:\Your\Directory\Path"; // 替换为你的目录路径
        fileWatcher = new FileWatcher(directoryPath, pictureBox);
    }

    [STAThread]
    public static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new MainForm());
    }
}

说明

  1. FileWatcher 类:这是一个封装了 FileSystemWatcher 的类,用于监听指定目录的文件变化。

    • FileWatcher 构造函数接收目录路径和 PictureBox 控件的引用。
    • OnChanged 方法在目录发生变化时被调用,获取最新的文件并更新 PictureBox
    • GetLatestFile 方法用于获取目录中最新的文件。
  2. MainForm 类:这是一个简单的 Windows 窗体应用程序,用于显示最新的图片。

    • MainForm 构造函数初始化 PictureBox 控件并创建 FileWatcher 实例。
    • Main 方法是应用程序的入口点,启动窗体应用程序。

使用方法

  1. 将上述代码复制到你的 C# 项目中。
  2. 替换 directoryPath 为你需要监听的目录路径。
  3. 运行程序后,当指定目录中有新文件生成时,PictureBox 会自动显示最新的图片。

这样,你就可以实现监听目录中的文件变化,并在界面上显示最新的图片了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码伐木匠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值