FileSystemWatcher - 创建和重命名 C#
FileSystemWatcher - Create and Rename C#
我目前正在开发一个供稿器应用程序,它可以查找添加的新文件并打印出文件名。但是当我创建一个新文件时,文件名会立即打印在控制台上。它不会等到我重命名新创建的文件。我该怎么做?
以下是我的设置。我没有使用 watcher.Renamed+=OnRenamed
因为当我重命名文件夹中的任何其他文件时,它正在控制台上打印。但是我的要求是只显示新创建的文件列表。
watcher = new FileSystemWatcher(folderPath);
watcher.IncludeSubdirectories = true;
watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName;
watcher.Filter = "*.*";
watcher.Created += OnCreated;
TIA
问题是(可能)您要进入 windows 资源管理器,右键单击并选择新建 -> 文件类型。当您这样做时,windows 会立即使用默认名称创建文件,例如 New Text Document.txt
并让您有机会重命名它。此重命名与任何其他重命名没有区别,因此您有 2 个选项。
- 停止创建这样的文件,而是通过打开文本编辑器(或您使用的任何应用程序,excel 等)创建文件,并在应用程序中创建一个新文件并以正确的名称保存.这将创建具有您期望的名称的文件。
- 更改您的代码以适应文件重命名。
由于 Windows 中的文件浏览器处理新文件创建的方式(例如,通过新建->文本文档快捷方式),您需要注意重命名。
您可以通过 HashSet<string>
对象跟踪添加文件的完整路径,并按如下方式更改您的监控逻辑:
当文件创建时,检查其大小。您可以使用 FileInfo.Length
来做到这一点。如果它是零字节,则忽略该事件。否则,将其添加到 HashSet
(重复项将被自动忽略)。
当文件 重命名 时,检查旧的完整路径和名称并将其从 HashSet
中删除(如果存在);将新的完整路径和名称添加到 HashSet
,而不考虑大小。
这应该捕获所有新文件并忽略 "New Text Document" 样式对象。
我目前正在开发一个供稿器应用程序,它可以查找添加的新文件并打印出文件名。但是当我创建一个新文件时,文件名会立即打印在控制台上。它不会等到我重命名新创建的文件。我该怎么做?
以下是我的设置。我没有使用 watcher.Renamed+=OnRenamed
因为当我重命名文件夹中的任何其他文件时,它正在控制台上打印。但是我的要求是只显示新创建的文件列表。
watcher = new FileSystemWatcher(folderPath);
watcher.IncludeSubdirectories = true;
watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName;
watcher.Filter = "*.*";
watcher.Created += OnCreated;
TIA
问题是(可能)您要进入 windows 资源管理器,右键单击并选择新建 -> 文件类型。当您这样做时,windows 会立即使用默认名称创建文件,例如 New Text Document.txt
并让您有机会重命名它。此重命名与任何其他重命名没有区别,因此您有 2 个选项。
- 停止创建这样的文件,而是通过打开文本编辑器(或您使用的任何应用程序,excel 等)创建文件,并在应用程序中创建一个新文件并以正确的名称保存.这将创建具有您期望的名称的文件。
- 更改您的代码以适应文件重命名。
由于 Windows 中的文件浏览器处理新文件创建的方式(例如,通过新建->文本文档快捷方式),您需要注意重命名。
您可以通过 HashSet<string>
对象跟踪添加文件的完整路径,并按如下方式更改您的监控逻辑:
当文件创建时,检查其大小。您可以使用 FileInfo.Length
来做到这一点。如果它是零字节,则忽略该事件。否则,将其添加到 HashSet
(重复项将被自动忽略)。
当文件 重命名 时,检查旧的完整路径和名称并将其从 HashSet
中删除(如果存在);将新的完整路径和名称添加到 HashSet
,而不考虑大小。
这应该捕获所有新文件并忽略 "New Text Document" 样式对象。