追踪单个文件的服务,不要文件夹的!

slove1116 2009-11-24 04:49:22
我想在windows服务中追踪我指定的数个文件,如果文件移动,把旧路径和新路径返回給我!求方法!这里有没有哪位大哥实现过!希望指点
...全文
40 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
slove1116 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 linux7985 的回复:]
引用 5 楼 slove1116 的回复:
这个我用过!但是如果我指定文件夹被移动是不会触发时间的!而且这个类也不能单独监控一个文件,只能监控一个文件夹


可以啊,你把那个文件名写上就成了
[/Quote]
写文件名也要先写 watcher.Path,watcher.path只能是目录
烈火蜓蜻 2009-11-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 slove1116 的回复:]
这个我用过!但是如果我指定文件夹被移动是不会触发时间的!而且这个类也不能单独监控一个文件,只能监控一个文件夹
[/Quote]

可以啊,你把那个文件名写上就成了
slove1116 2009-11-24
  • 打赏
  • 举报
回复

这个我用过!但是如果我指定文件夹被移动是不会触发时间的!而且这个类也不能单独监控一个文件,只能监控一个文件夹
烈火蜓蜻 2009-11-24
  • 打赏
  • 举报
回复
C# 版有

public class Watcher
{

public static void Main()
{
Run();

}

[PermissionSet(SecurityAction.Demand, Name="FullTrust")]
public static void Run()
{
string[] args = System.Environment.GetCommandLineArgs();

// If a directory is not specified, exit program.
if(args.Length != 2)
{
// Display the proper way to call the program.
Console.WriteLine("Usage: Watcher.exe (directory)");
return;
}

// Create a new FileSystemWatcher and set its properties.
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = args[1];
/* Watch for changes in LastAccess and LastWrite times, and
the renaming of files or directories. */
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;
// Only watch text files.
watcher.Filter = "*.txt";

// Add event handlers.
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.Created += new FileSystemEventHandler(OnChanged);
watcher.Deleted += new FileSystemEventHandler(OnChanged);
watcher.Renamed += new RenamedEventHandler(OnRenamed);

// Begin watching.
watcher.EnableRaisingEvents = true;

// Wait for the user to quit the program.
Console.WriteLine("Press \'q\' to quit the sample.");
while(Console.Read()!='q');
}

// Define the event handlers.
private static void OnChanged(object source, FileSystemEventArgs e)
{
// Specify what is done when a file is changed, created, or deleted.
Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
}

private static void OnRenamed(object source, RenamedEventArgs e)
{
// Specify what is done when a file is renamed.
Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
}
}




烈火蜓蜻 2009-11-24
  • 打赏
  • 举报
回复
// monitor_fs.cpp
// compile with: /clr
#using <system.dll>

using namespace System;
using namespace System::IO;

ref class FSEventHandler
{
public:
void OnChanged (Object^ source, FileSystemEventArgs^ e)
{
Console::WriteLine("File: {0} {1}",
e->FullPath, e->ChangeType);
}
void OnRenamed(Object^ source, RenamedEventArgs^ e)
{
Console::WriteLine("File: {0} renamed to {1}",
e->OldFullPath, e->FullPath);
}
};

int main()
{
array<String^>^ args = Environment::GetCommandLineArgs();

if(args->Length < 2)
{
Console::WriteLine("Usage: Watcher.exe <directory>");
return -1;
}

FileSystemWatcher^ fsWatcher = gcnew FileSystemWatcher( );
fsWatcher->Path = args[1];
fsWatcher->NotifyFilter = static_cast<NotifyFilters>
(NotifyFilters::FileName |
NotifyFilters::Attributes |
NotifyFilters::LastAccess |
NotifyFilters::LastWrite |
NotifyFilters::Security |
NotifyFilters::Size );

FSEventHandler^ handler = gcnew FSEventHandler();
fsWatcher->Changed += gcnew FileSystemEventHandler(
handler, &FSEventHandler::OnChanged);
fsWatcher->Created += gcnew FileSystemEventHandler(
handler, &FSEventHandler::OnChanged);
fsWatcher->Deleted += gcnew FileSystemEventHandler(
handler, &FSEventHandler::OnChanged);
fsWatcher->Renamed += gcnew RenamedEventHandler(
handler, &FSEventHandler::OnRenamed);

fsWatcher->EnableRaisingEvents = true;

Console::WriteLine("Press Enter to quit the sample.");
Console::ReadLine( );
}
烈火蜓蜻 2009-11-24
  • 打赏
  • 举报
回复
有一个FileSystemWatcher的类可以用来监视文件,文件夹也可以,怎么用,你可以用MSDN来查询一下

很方便的
slove1116 2009-11-24
  • 打赏
  • 举报
回复
一顶

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧