我正在我团队的项目中做一些任务。我做了我的第一项工作,即如何从包含寄存器文件的 USB 识别和获取文件。我研究了如何防止某些操作,例如:从 USB 复制、粘贴、删除不包含注册文件的文件。到现在为止,我没有任何想法来解决这个问题。
如果我的电脑中有未经授权的USB和授权的USB。我可以从授权的 USB 但未经授权的 USB 复制、粘贴、删除文件。
我曾尝试使用 FileSystemWatcher,但我只能在更改后处理“文件已更改”信息。我如何在更改之前处理(在完成复制、粘贴或删除之前)?
我认为有些东西可以作为阻止 v1.0 程序,但不能阻止所有文件,只是从确定的目录中,我没有阻止 v1.0 的源代码
任何帮助都是宝贵的。
我正在做一个使用文件系统观察器的应用程序,主要目的是监视正在复制的文件,所以我查看了文件系统观察器方法,我找到了4个可以起诉的事件,它们是更改,删除,重命名和创建,我没有找到复制事件,嗯,我想看特定的文件,当用户试图复制文件我阻止他使用文件系统观察器方法这样做,所以在文件系统观察器有任何方法用于复制我可以使用的文件监控?,对不起我的问题可能看起来很愚蠢,但这是我第一次使用文件系统观察器,我读了很多,几乎所有人都同意可以在该类中使用的4个事件.
如何让文件系统观察者观看在运行时选择的路径,例如用户可以输入C:\ Users\User\Desktop \
我试过使用一个文本框和一个按钮,点击它设置路径
fileWatcher.Path = Convert.ToString(txtFileWatcherPath);
Run Code Online (Sandbox Code Playgroud)
这构建并运行但输入的任何路径都会导致程序崩溃(单击按钮后)
请注意,在这个早期阶段我不关心错误处理.
我正在尝试用c#编写程序,正在监视多个文件夹。如果在任何监视的文件夹中添加了文件,则程序应在定义的路径中创建副本。我的问题是当我创建文件时,程序会在错误的文件夹中创建副本
例如,如果我将文件添加到
C:\ folder1 \ stuff \它应该在创建副本
D:\ stuff1 \ copied1 ... 3 \但是它创建了副本
D:\ stuff2 \ copyed1 ... 3 \
有代码:
命名空间观察者
{
公共班级观察者
{
结构路径
{
公共字符串sourcePath;
公共List <string>目的地;
公共FileSystemWatcher Watcher;
}
List <Paths>路径=新的List <Paths>();
公众观察者()
{
createWatchTower();
}
公共无效值watch()
{
foreach(路径中的路径p)
{
p.Watcher.Created + =(sender,e)=> onCreate(sender,e,p.destinations);
}
}
无效createWatchTower()
{
路径p1;
p1.destinations =新的List <string>();
p1.sourcePath = @“ C:\ folder1 \ stuff \”;
p1.Watcher = new FileSystemWatcher();
p1.Watcher.Path = p1.sourcePath;
p1.Watcher.EnableRaisingEvents = true;
p1.destinations.Add(@“ D:\ stuff1 … 我知道这是一个普遍的问题,但我只是打开它进行讨论。我必须假设其他人一定做过类似的事情,我不想做很多代码来找出我的解决方案不起作用。
这就是我所拥有的。用户将一个文件作为 OLE 对象添加到数据库中,并将某种态度与该文件相关联 - 它关联到的项目、版本等。我正在使用 Access - 客户选择不是我的!
当他们想要编辑它时,他们需要检查它。在这个阶段,我想监视文件并在他们保存文件时将其恢复到数据库中。
我认为文件系统观察程序是我最好的方法 - 监视更改并将其保存回数据库,甚至在触发更改时我可以获得对文件的访问权限。如果它仍然打开,应用程序会将它锁定,所以我知道用户还没有完成。
所以简而言之,我的问题是文件系统观察者是解决这个问题的正确方法吗?有人建议别的吗?
谢谢,吉姆
我创建了一个相对简单的 Windows 应用程序,用于监视文件夹中的文件。在文件夹中创建新文件时,应用程序(通过 FileSystemWatcher)将打开文件并处理内容。长话短说,内容与 Selenium 一起使用,通过 IE11 自动化网页。此处理每个文件大约需要 20 秒。
问题是,如果在大致相同的时间或应用程序处理文件时在文件夹中创建了多个文件,则 FileSystemWatcher onCreated 看不到下一个文件。因此,当第一个文件的处理完成时,应用程序就会停止。同时,文件夹中有一个文件没有得到处理。如果在 onCreated 处理完成后添加文件,它可以正常工作并处理下一个文件。
有人可以指导我解决这个问题吗?非常欢迎过多的细节。
添加更改事件的正确方法是什么?
public static void WatchFileForChange()
{
FileSystemWatcher fsw = new FileSystemWatcher();
fsw.Path = Path.Join(System.Configuration.ConfigurationManager.AppSettings["AccessDBFolder"]);
fsw.Changed += new FileSystemEventHandler(UpdateMDBChange);
fsw.Filter = "*.mdb";
fsw.NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastWrite;
fsw.EnableRaisingEvents = true;
fsw.IncludeSubdirectories = true;
}
private static void UpdateMDBChange(object sender, FileSystemEventArgs e)
{
///sf/answers/213007441/
DateTime lastWriteTime = File.GetLastWriteTime(e.FullPath);
if (lastWriteTime.Ticks - lastRead.Ticks > 100000)
{
TestClient().Wait();
lastRead = lastWriteTime;
}
}
Run Code Online (Sandbox Code Playgroud)
是fsw.Changed += new FileSystemEventHandler(UpdateMDBChange);还是fsw.Changed += UpdateMDBChange;
两种方式似乎都很好。但我不知道是否会出现技术问题。或者如果某种方式不受欢迎。