标签: filesystemwatcher

FilersystemWatcher在模拟用户下运行

我有一个c#winform应用程序,它在本地帐户下运行,但需要监视域上的文件夹.我使用稍微修改过的代码从这里复制文件,并且工作正常.可以使用类似的代码与FileSystemWatcher设置模拟,以便我可以监控域上的文件夹吗?

c# impersonation filesystemwatcher

3
推荐指数
1
解决办法
3074
查看次数

检查安装应用程序之前/之后所做的更改?

在 Linux 上,我需要知道在从源代码编译和安装应用程序后添加/修改/移动/删除了哪些文件,即。命令行,Linux 相当于 venerale InCtrl5

是否有执行此操作的实用程序,或一组我可以运行并显示更改的命令?

谢谢你。


编辑:以下命令还可以,但我不需要知道发生更改或更新“./..”的行号:

# ls -aR /tmp > b4.txt
# touch /tmp/test.txt
# ls -aR /tmp > after.txt
# diff -u b4.txt after.txt
Run Code Online (Sandbox Code Playgroud)

linux installation filesystemwatcher

3
推荐指数
1
解决办法
1331
查看次数

C#:如何检查打开的文件是否已更新

例如,您知道该功能,C:\test.txt如果您在另一个编辑器中也有相同的文件,并且在那里编辑它,则在您返回时,应用程序将提示文件已更改,无论您是否要更新它.如何检查文件是否已更新?

UPDATE

问一个姐妹问题" 使用FileSystemWatcher来监视文件的变化 "

c# io filesystemwatcher

3
推荐指数
2
解决办法
4164
查看次数

区分 FileSystemWatcher 中的 Changed 事件和 Created 事件?

我正在使用 来FileSystemWatcher监视某个目录,当有人将编辑保存到文件时,我需要引发一个事件,而当他们创建或移动文件时,我需要引发另一个事件。

使用 和 Created 事件的组合可以很好地监视移动的文件Deleted。当有人将编辑保存到文件时,确实会引发 Changed 事件。但是,当他们移动文件时Changed,事件也会引发,这会干扰我对Created和已删除事件的处理。

所以基本上,我只想在用户将编辑保存到文件时引发该Changed事件,而不是在用户移动或创建文件时引发该事件。我尝试使用该ChangeType属性来检查它实际上是一个Changed事件还是一个Created事件,但令我惊讶的是,ChangeType Changed即使在移动或创建文件时,也会为 Change 事件引发,而不是ChangeType Created(应该是其中一种类型) 。

所以我不知道如何检查更改事件实际上是由文件编辑触发的,而不是文件创建或移动...

有任何想法吗?

.net c# filesystemwatcher c#-4.0

3
推荐指数
1
解决办法
2966
查看次数

参数异常(路径不是合法形式)

背景信息:我正在使用服务中实现的FileSystemWatcher类来监视文件中的更改.下面是触发onCreate事件时抛出Argument Exception(Path不是合法形式)的编码部分.

FileMonitor.CS

public partial class FileMonitor:ServiceBase
{
 public FileSystemWatcher Watcher = new FileSystemWatcher();

    Private void FileWatcher()
    {
    FileActionHandler ActionHandler = new FileActionHandler();
    Watcher.Created += new FileSystemEventHandler(ActionHandler.onCreate);
    Watcher.Deleted += new FileSystemEventHandler(ActionHandler.onDelete);
    Watcher.Renamed += new RenamedEventHandler(ActionHandler.onRenamed);
    Watcher.EnableRaisingEvents = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

FileActionHandler.CS

 class FileActionHandler
 {
  FileMonitor FileMon = new FileMonitor();
  public void onCreate/onRename/onDelete(object source, FileSystemEventArgs e)
    {
      try
      {
       FileMon.Watcher.EnableRaisingEvents = false;
      }
      catch
      {
       /* Exception Code */
      }
      finally
      {
       FileMon.Watcher.EnableRaisingEvents = true;
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

问题:任何人都可以告诉我为什么抛出异常以及如何解决它?

c# filesystemwatcher argumentexception

3
推荐指数
1
解决办法
6130
查看次数

C#:如何跟踪目录中添加的每个文件并将fileinfo记录到文件中?

我有一个文件夹(让我们称之为folder1)连续添加新文件.我为folder1中的每个文件维护一个日志文件(包含文件的完整路径和大小).我将使用此日志文件将文件从folder1复制到folder2.

这是一个连续的过程,我将编写一个Windows服务,但这是以后的.

首先,我想的是有一个定时器/文件系统观察器,它将监视文件夹并查找更改,并在事件循环中通过folder1中的文件列表,并将fileinfo(即文件路径和大小)添加到我的日志中文件(这将是一个普通的.txt文件).

我的问题是这是一种有效的方法吗?有快速或有效的方法吗?

任何反馈或建议表示赞赏.

c# file-io logging filesystemwatcher

3
推荐指数
1
解决办法
777
查看次数

如何为 FileSystemWatcher 设置超时功能?

如果这个问题太简单,我很抱歉,我是这个主题的新手。

我正在创建一些文件,需要等到它们完成或直到经过一段时间(这就是我所说的超时)。

FileSystemWatcher 非常适合“等到它们完成”,但我看不到控制其寿命的参数。

使用Tread.Sleep似乎违背了目的 (?) - 如果它的使用是正确的,则FileSystemWatcher不会存在,我们只会Tread.Sleep while !File.Exists.

那么,实现它最简单的正确方法是什么?谢谢。

c# filesystemwatcher file

3
推荐指数
1
解决办法
1799
查看次数

获取要在主UI线程上发生的filesystemwatcher事件

我可以在主UI线程上获得filesystemwatcher事件吗?目前,文件更改将在其自己的线程上触发.

c# filesystemwatcher winforms

3
推荐指数
1
解决办法
2742
查看次数

处置FileSystemWatcher

所以我的理解是,每当使用实现IDisposable的类时,它的父级也需要实现IDisposable接口。(使用FileSystemWatcher的FileWatcher)

因此,在使用FileSystemWatcher时,处置FileSystemWatcher的正确方法是什么?我希望在关闭应用程序之前不处理/(监视)FileWatcher。

我会使用“负责任的所有者模式”吗(尝试/最终)还是其他?我的FileWatcher是否也应该实现IDisposable?我将无法使用using {},因为此fileWatcher应该在应用程序整个运行过程中监视文件的更改。处理这种情况的正确方法是什么?

public class FileWatcher : IFileWatcher
{
    private FileSystemWatcher watcher;

    public event EventHandler<EventArgs> SettingsChanged;

    public FileWatcher(bool start)
    {
        this.RegisterForChanges();
    }

    public void OnChanged(object source, EventArgs e)
    {
        if (this.SettingsChanged != null)
        {
            this.SettingsChanged(source, new EventArgs());
        }
    }

    private void RegisterForChanges()
    {
        /// more code here etc
        ...
        this.watcher = new FileSystemWatcher
                           {
                               Path = directory, 
                               NotifyFilter =
                                   NotifyFilters.LastAccess | NotifyFilters.LastWrite
                                   | NotifyFilters.FileName | NotifyFilters.DirectoryName, 
                               Filter = fileName
                           };

        // Add event handlers.
        this.watcher.Changed += this.OnChanged;

        // Begin …
Run Code Online (Sandbox Code Playgroud)

.net c# filesystemwatcher .net-4.5

3
推荐指数
1
解决办法
5546
查看次数

FileSystemWatcher:如何仅为目录中的新文件引发事件?

FileSystemWatcher:如何仅为目录中的新文件引发事件?

我有一个目录,我的服务扫描.我使用FileSystemWatcher:

构造函数:

if(Directory.Exists(_dirPath))
{
    _fileSystemWatcher = new FileSystemWatcher(_dirPath);
}
Run Code Online (Sandbox Code Playgroud)

然后,我在目录上订阅:

public void Subscribe()
{
    try
    {
        //if (_fileSystemWatcher != null)
        //{
        //    _fileSystemWatcher.Created -= FileSystemWatcher_Created;
        //    _fileSystemWatcher.Dispose();
        //}

        if (Directory.Exists(_dirPath))
        {                    
            _fileSystemWatcher.EnableRaisingEvents = true;
            _fileSystemWatcher.Created += FileSystemWatcher_Created;
            _fileSystemWatcher.Filter = "*.txt";                 
        }                    
}
Run Code Online (Sandbox Code Playgroud)

但是,问题是我想在新文件创建(或复制)时获取事件.相反,我从该目录中的所有文件中获取事件已经存在.

如何仅从新文件中获取事件?谢谢!

c# filesystemwatcher

3
推荐指数
1
解决办法
954
查看次数