I am storing some select files and folders path in my database.

  • Thread starter Thread starter mustafa.mustafa77
  • Start date Start date
M

mustafa.mustafa77

How can we get the path of a file or folder when we move or copy and
paste files or folders from one directory / folder to another?

Is there any "event" in Windows which identifies the new path of the
pasted files or folder which can be picked up by an application in C#
Winform 2.0.

Problem discription:
I am storing some select files and folders path in my database.
Problem is if files or folders are moved from outside of my
application then path is not updating in my database.

I need to update the path (including network path) in my database if
files or folder moved from outside of my application.

Thank you.
 
Hello Mustafa,

In .Net 2.0 we have a special delegate to monitor the changes made to the
file.
i.e FileSystemWatcher.

Go through the following sample from MSDN

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);
}
}

Hope this helps much..

Thanks
Jibesh
 
Hi Jibesh

thanks for your reply.

I have tried with FilesystemWatcher. but there is problem.
1) Filesystemwatcher has only 4 events watcher.Changed,
watcher.Created, watcher.Deleted, watcher.Renamed
there is no file moved event.

2) In FileSystemWatcher we have to specify Folder root path, for
example watcher.Path="C:\\";.
but in my case user can paste anywere in the Network, or some other
drive.

Is there any way with shell programming in C# 2.0

Regards
Mustafa



Hello Mustafa,

In .Net 2.0 we have a special delegate to monitor the changes made to the
file.
i.e FileSystemWatcher.

Go through the following sample from MSDN

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);
    }

}

Hope this helps much..

Thanks
Jibesh




How can we get the path of a file or folder when we move or copy and
paste files or folders from one directory /  folder to another?
Is there any "event" in Windows which identifies the new path of the
pasted files or folder which can be picked up by an application in C#
Winform 2.0.
Problem discription:
I am storing some select files and folders path in my database.
Problem is if files or folders are moved from outside of my
application then path is not updating in my database.
I need to update the path (including network path) in my database if
files or folder moved from outside of my application.
Thank you.- Hide quoted text -

- Show quoted text -
 
Back
Top