2017-04-25 2 views
0

さて、ユーザーが値を入力できるテキストボックスがプログラムにありますが、この値を別のクラスで呼びたいと思っています。別のクラスのテキストボックスの値を使用する

public static void Main() 
    { 

     string sourceDirectory = @"F:\RootFolder\testingfolder\Test"; 
     string targetDirectory = @"c:\targetDirectory"; //this is where the value would site 

     Copy(sourceDirectory, targetDirectory); 
    } 

これを呼び出す方法について100%確実ではありません。 多くの必要な調査の後、私は私のために働くために以下を見つけました。

private void CopyInstallFiles(object sender, EventArgs e) 
    { 
     string sourceDirectory = @"F:somepath"; 
     string targetDirectory = directoryImput.Text; 

     //Copy all the files & Replaces any files with the same name 
     foreach (string newPath in System.IO.Directory.GetFiles(sourceDirectory, "*.*", 
      SearchOption.AllDirectories)) 
      File.Copy(newPath, newPath.Replace(sourceDirectory, targetDirectory), true); 
+0

ええ、私は上記のポストを使用していたが前と同じようにファイルを移動していましたが、現在はフルフォルダを移動する必要があります。 – Tom

+0

どういう意味ですか?別のクラスがあり、そのクラスのメソッドを実行したいですか?そのメソッドは、ユーザーがテキストボックスに入力するパラメータを取るか? – Nino

+0

私はフォームfrom1を持っています、そして、これは、ユーザーがテキスト入力ボックスと呼ばれるテキストボックスを入力するテキストボックスを持っています。私がしたいのは、クラス内でDirectoryInput内の値をtargetdirectoryとして呼び出すことです。 – Tom

答えて

1

すべてのファイルとフォルダを移動する方法を探していることがわかりました。私は愚かです。ここでは、https://msdn.microsoft.com/en-us/library/bb762914.aspxからいくつかの例があります:

using System; 
using System.IO; 

class DirectoryCopyExample 
{ 
    static void Main() 
    { 
     // Copy from the current directory, include subdirectories. 
     DirectoryCopy(".", @".\temp", true); 
    } 

    private static void DirectoryCopy(string sourceDirName, string destDirName, bool copySubDirs) 
    { 
     // Get the subdirectories for the specified directory. 
     DirectoryInfo dir = new DirectoryInfo(sourceDirName); 

     if (!dir.Exists) 
     { 
      throw new DirectoryNotFoundException(
       "Source directory does not exist or could not be found: " 
       + sourceDirName); 
     } 

     DirectoryInfo[] dirs = dir.GetDirectories(); 
     // If the destination directory doesn't exist, create it. 
     if (!Directory.Exists(destDirName)) 
     { 
      Directory.CreateDirectory(destDirName); 
     } 

     // Get the files in the directory and copy them to the new location. 
     FileInfo[] files = dir.GetFiles(); 
     foreach (FileInfo file in files) 
     { 
      string temppath = Path.Combine(destDirName, file.Name); 
      file.CopyTo(temppath, false); 
     } 

     // If copying subdirectories, copy them and their contents to new location. 
     if (copySubDirs) 
     { 
      foreach (DirectoryInfo subdir in dirs) 
      { 
       string temppath = Path.Combine(destDirName, subdir.Name); 
       DirectoryCopy(subdir.FullName, temppath, copySubDirs); 
      } 
     } 
    } 
} 

ショートバージョン - DirectoryManager.csに配置し、DirectoryManager.CopyDirectoryによって呼び出す(送信元、送信先):

using System.IO; 

class DirectoryManager 
{ 
    internal static void CopyDirectory(string input, string output) 
    { 
     DirectoryInfo dir = new DirectoryInfo(input); 
     if (dir.Exists) 
     { 
      DirectoryInfo[] dirs = dir.GetDirectories(); 
      Directory.CreateDirectory(output); 
      FileInfo[] files = dir.GetFiles(); 
      foreach (FileInfo file in files) 
      { 
       string temppath = Path.Combine(output, file.Name); 
       file.CopyTo(temppath, false); 
      } 
      foreach (DirectoryInfo subdir in dirs) 
      { 
       string temppath = Path.Combine(output, subdir.Name); 
       CopyDirectory(subdir.FullName, temppath); 
      } 
     } 
    } 
} 
+0

ありがとう、私はちょっと混乱しています。私はテキストボックスに入力された値をどのように呼び出すのか分かりません。 – Tom

+0

私はそれが同じかもしれないと思った。 'System.IO.Directory.Move(sourceDirectory、targetDirectory);' – Tom

+0

System.IO.Directory.Move **はディレクトリを移動します(sourceDirectory内のファイルは消滅します)。 MSDNの例は非常に良いですが、あなたがあまり乱れていないように見えるので、私は自分の答えを編集します。 – Hekkaryk

関連する問題