2016-09-29 55 views
-2

有隻有一個ComboBox生成一個表單:enter image description here使用filewatcher將文件發送到特定的文件夾

而且在驅動器d一個MyTest文件夾,你可以找到Folder1Folder2Folder3enter image description here

我想看的任何如果在組合框中選擇Folder1,則將.txt文件添加到文件夾MyTest中,並將它們移動到Folder1 aso

public void CreateFileWatcher(string path) 
     { 
     FileSystemWatcher fsw = new FileSystemWatcher("D:\\MyTest"); 

     fsw.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite 
      | NotifyFilters.FileName | NotifyFilters.DirectoryName; 

     fsw.Changed += new FileSystemEventHandler(OnChanged); 

     fsw.Created += new FileSystemEventHandler(OnChanged); 

     fsw.Deleted += new FileSystemEventHandler(OnChanged); 

     fsw.Error += new ErrorEventHandler(OnError); 

     fsw.EnableRaisingEvents = true; 

    } 

    private static void OnChanged(object source, FileSystemEventArgs e) 
    { 

    } 

    private static void OnError(object source, ErrorEventArgs e) 
    { 

     Console.WriteLine("The FileSystemWatcher has detected an error"); 

     if (e.GetException().GetType() == typeof(InternalBufferOverflowException)) 
     { 
      Console.WriteLine(("The file system watcher experienced an internal buffer overflow: " + e.GetException().Message)); 
     } 
    } 
+0

它可以工作,那麼你會遇到一個問題? –

+0

我不知道該怎麼做。我應該在某些地方使用'File.Move'和'comboBox1.SelectedIndex'嗎? – Rossalinda

+0

提示:檢查FileSystemEventArgs的屬性 – jeroenh

回答

2

您可以實現OnChanged事件象下面這樣:

private void OnChanged(object sender, FileSystemEventArgs e) 
{ 
    string destFolder = Path.Combine(@"d:\", comboBox1.SelectedItem.ToString()); 
    if (!Directory.Exists(destFolder)) 
    { 
     Directory.CreateDirectory(destFolder); 
    } 
    string destFileName = Path.Combine(destFolder, new FileInfo(e.FullPath).Name); 
    try 
    { 
     File.Move(e.FullPath, destFileName); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine("File move operation error:" + ex.Message); 
    } 
} 
+0

工作完美,非常感謝幫助:) – Rossalinda

0

這是你如何移動文件

string sourceFile = @"C:\Users\Public\public\test.txt"; 
    string destinationFile = @"C:\Users\Public\private\test.txt"; 

    // To move a file or folder to a new location: 
    System.IO.File.Move(sourceFile, destinationFile); 

    // To move an entire directory. To programmatically modify or combine 
    // path strings, use the System.IO.Path class. 
    System.IO.Directory.Move(@"C:\Users\Public\public\test\", @"C:\Users\Public\private"); 
} 
相關問題