2013-06-11 5 views
1

Я хочу, чтобы Filewatcher просмотрел путь к FileBrowseBox, но с FileBrowseBox вам нужно выбрать файл. Как посмотреть путь, в котором находится файл? Поэтому мне нужно FileWatch ввода FileBrowseBox. Я понятия не имею, как это сделать. У меня есть код и печатный экран для вас, ребята.Путь к файлу. C#

using System; 
using System.IO; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 

public partial class Form1 : Form 
{ 
    private bool pause = false; 
    private bool cut1 = false; 
    private bool copy1 = false; 
    Form2 popup = new Form2(); 


    public Form1() 

    { 
     InitializeComponent(); 
    } 
    // The lines with performed actions of a file 
    private void fileSystemWatcher1_Created(object sender, System.IO.FileSystemEventArgs e) 
    { 
     if (!pause) 
     { 
      listBox1.Items.Add("File Created> " + e.FullPath + " -Date:" + DateTime.Now); 
     } 
    } 

    private void fileSystemWatcher1_Changed(object sender, System.IO.FileSystemEventArgs e) 
    { 
     if (!pause) 
     { 
      listBox1.Items.Add("File Changed> " + e.FullPath + " -Date:" + DateTime.Now); 
     } 
    } 
    private void fileSystemWatcher1_Deleted(object sender, System.IO.FileSystemEventArgs e) 
    { 
     if (!pause) 
     { 
      listBox1.Items.Add("File Deleted> " + e.FullPath + " -Date:" + DateTime.Now); 
     } 
    } 

    private void fileSystemWatcher1_Renamed(object sender, System.IO.RenamedEventArgs e) 
    { 
     if (!pause) 
     { 
      listBox1.Items.Add("File Renamed> " + e.FullPath + " -Date:" + DateTime.Now); 
     } 
    } 

    private void fileSystemWatcher2_Changed(object sender, System.IO.FileSystemEventArgs e) 
    { 
     if (!pause) 
     { 
      listBox1.Items.Add("File Changed> " + e.FullPath + " -Date:" + DateTime.Now); 
     } 
    } 

    private void fileSystemWatcher2_Created(object sender, System.IO.FileSystemEventArgs e) 
    { 
     if (!pause) 
     { 
      listBox1.Items.Add("File Created> " + e.FullPath + " -Date:" + DateTime.Now); 
     } 
    } 

    private void fileSystemWatcher2_Deleted(object sender, System.IO.FileSystemEventArgs e) 
    { 
     if (!pause) 
     { 
      listBox1.Items.Add("File Deleted> " + e.FullPath + " -Date:" + DateTime.Now); 
     } 
    } 

    private void fileSystemWatcher2_Renamed(object sender, System.IO.RenamedEventArgs e) 
    { 
     if (!pause) 
     { 
      listBox1.Items.Add("File Renamed> " + e.FullPath + " -Date:" + DateTime.Now); 
     } 
    } 

    //1st directory 
    private void button2_Click(object sender, EventArgs e) 
    { 
     if (dlgOpenDir.ShowDialog() == DialogResult.OK) 
     { 
      fileSystemWatcher1.EnableRaisingEvents = false; // Stop watching 
      fileSystemWatcher1.IncludeSubdirectories = true; 
      fileSystemWatcher1.Path = dlgOpenDir.SelectedPath; 
      textBox1.Text = dlgOpenDir.SelectedPath;   // Text of textBox2 = Path of fileSystemWatcher2 
      fileSystemWatcher1.EnableRaisingEvents = true; // Begin watching 
     } 
    } 
    //2nd directory 
    private void button3_Click(object sender, EventArgs e) 
    { 
     if (dlgOpenDir.ShowDialog() == DialogResult.OK) 
     { 
      fileSystemWatcher2.EnableRaisingEvents = false; // Stop watching 
      fileSystemWatcher2.IncludeSubdirectories = true; 
      fileSystemWatcher2.Path = dlgOpenDir.SelectedPath; 
      textBox2.Text = dlgOpenDir.SelectedPath;   // Text of textBox2 = Path of fileSystemWatcher2 
      fileSystemWatcher2.EnableRaisingEvents = true; // Begin watching 
     } 
    } 
    //log 
    private void button1_Click(object sender, EventArgs e) 
    { 

     DialogResult resDialog = dlgSaveFile.ShowDialog(); 
     if (resDialog.ToString() == "OK") 
     { 
      FileInfo fi = new FileInfo(dlgSaveFile.FileName); 
      StreamWriter sw = fi.CreateText(); 
      foreach (string sItem in listBox1.Items) 
      { 
       sw.WriteLine(sItem); 
      } 
      sw.Close(); 
     } 
    } 
    //pause watching 
    private void pause_button_Click(object sender, EventArgs e) 
    { 
     if (!pause) 
     { 
      pause = true; 
      pause_button.Text = "Unpause"; 
     } 
     else 
     { 
      pause = false; 
      pause_button.Text = "Pause Watching"; 
     } 
    } 
    //clear listbox 
    private void clear_button_Click(object sender, EventArgs e) 
    { 
     listBox1.Items.Clear(); 
    } 

    private void Transfer_Click(object sender, EventArgs e) 
    { 

     //copy a file 
     if (copy1) 
     { 
      DialogResult dialogresult = popup.ShowDialog(); 
      var source = FileBrowseBox.Text; 
      var target = Path.Combine(DestinationBox.Text, Path.ChangeExtension(FileNameBox.Text, Path.GetExtension(source))); 

      if (File.Exists(target)) 
      { 

       if (dialogresult == DialogResult.OK) 
       { 
        File.Delete(target); 
       } 
       else if (dialogresult == DialogResult.Cancel) 
       { 

       } 
      } 
      else 
      { 
       File.Copy(FileBrowseBox.Text, Path.Combine(DestinationBox.Text, Path.ChangeExtension(FileNameBox.Text, Path.GetExtension(FileBrowseBox.Text)))); 
      } 
      if (dialogresult == DialogResult.Cancel) 
      { 

      } 
      else 
      { 
       File.Copy(FileBrowseBox.Text, Path.Combine(DestinationBox.Text, Path.ChangeExtension(FileNameBox.Text, Path.GetExtension(FileBrowseBox.Text)))); 
      } 
     } 
     //cut a file 
     if (cut1) 
     { 
      DialogResult dialogresult = popup.ShowDialog(); 
      var source = FileBrowseBox.Text; 
      var target = Path.Combine(DestinationBox.Text, Path.ChangeExtension(FileNameBox.Text, Path.GetExtension(source))); 

      if (File.Exists(target)) 
      { 

       if (dialogresult == DialogResult.OK) 
       { 
        File.Delete(target); 
       } 
       else if (dialogresult == DialogResult.Cancel) 
       { 

       } 
      } 
      else 
      { 
       File.Move(FileBrowseBox.Text, Path.Combine(DestinationBox.Text, Path.ChangeExtension(FileNameBox.Text, Path.GetExtension(FileBrowseBox.Text)))); 
      } 
      if (dialogresult == DialogResult.Cancel) 
      { 

      } 
      else 
      { 
       File.Move(FileBrowseBox.Text, Path.Combine(DestinationBox.Text, Path.ChangeExtension(FileNameBox.Text, Path.GetExtension(FileBrowseBox.Text)))); 
      } 
     } 
    } 
    private void Browse_file_Click(object sender, EventArgs e) 
    { 
     DialogResult resDialog = openFileDialog1.ShowDialog(); 
     if (resDialog == DialogResult.OK) 
     { 
      FileBrowseBox.Text = openFileDialog1.FileName; 
     } 
    } 

    private void Browse_destination_Click(object sender, EventArgs e) 
    { 
     DialogResult resDialog = folderBrowserDialog1.ShowDialog(); 
     if (resDialog == DialogResult.OK) 
     { 
      DestinationBox.Text = folderBrowserDialog1.SelectedPath; 
     } 
    } 

    private void CopyButton_CheckedChanged(object sender, EventArgs e) 
    { 
     copy1 = true; 
    } 

    private void Cut_CheckedChanged(object sender, EventArgs e) 
    { 
     cut1 = true; 
    } 
} 
} 

My application

я действительно нуждаюсь в файле для передачи, но я также нужен путь он находится. Как я поставил путь к файлу в FilebrowseBox в FileSystemWatcher1?

+0

Я не совсем ясно, что вы ищете, но, возможно, вы хотите, браузер папок вместо файлового браузера? –

+1

использовать http://msdn.microsoft.com/en-us/library/system.io.path.aspx –

+0

@DanPuzey Мне нужен файл для передачи, но мне также нужен путь, в котором он находится. Как я могу установить путь файла в FilebrowseBox в FileSystemWatcher1? – Loko

ответ

2

Это пример, который должен это исправить строку FilePath в примере должен быть один из ваших текстовых

string filePath = @"C:\MyDir\MySubDir\myfile.ext"; 
string directoryName; 
int i = 0; 

while (filePath != null) 
{ 
directoryName = Path.GetDirectoryName(filePath); 
Console.WriteLine("GetDirectoryName('{0}') returns '{1}'", 
    filePath, directoryName); 
filePath = directoryName; 
if (i == 1) 
{ 
    filePath = directoryName + @"\"; // this will preserve the previous path 
} 
i++; 
} 
+2

спасибо, но я до сих пор не знаю, как это работает. – Loko