2016-06-13 7 views
0

ファイルをソースフォルダから私のdestにコピーしたいと思います。フォルダソースディレクトリからコピー先にファイルをコピーするC#

場所/ URL(テーブルの列の名前)ここから取得しますGetDataByGeneralRoot();

ここでは、そのURLのファイルを新しいディレクトリにコピーします。

私が行っていることである。

DataSet1.T_DocumentsDataTable docTab = doc.GetDataByGeneralRoot(); 

      string gerneralRootPath = docTab.Rows[0]["URL"].ToString(); 
      gerneralRootPath = gerneralRootPath.Remove(gerneralRootPath.IndexOf("PDF") + 4); 

      string datadirectory = "//ch-s-0001535/G/inetpub/DocAddWeb/DataSource/"; 
      string final = datadirectory + gerneralRootPath; 

      foreach (string path in Directory.GetFiles(final, "*.*", SearchOption.AllDirectories)) 
      { 
       string t = path.Substring(path.IndexOf("\\") + 1); 
       File.Copy(t, t.Replace(final + t, rootFolderAbsolutePath)); 

      } 

私の問題/問題は、私は私が何であるか、私は私の方法のGetDataByGeneralRootからもらったURLからファイルだけではなく、すべてのファイルを取得したいと言うことができる方法です今起こっている。 HERE

は私tabelがどのように見えるかです: enter image description here

+0

ような何かをしたいと思いますが、あなただけのファイルを取得しようとしている場合最終的なディレクトリでSearchOption.AllDirectoriesをSearchOption.TopDirectoryOnlyに変更する必要があります – Kell

+0

@Kell IDを持っていて、これはいくつかのURLにリンクされています。このIDとすべてのURL/GetDataByGeneralRoot()を取得しました。 IDに関連付けられるファイルのみをコピーする – SuperDoc

+0

foreachループで、ファイルがIDに関連付けられているかどうかをチェックし、続行しない場合はチェックします。 – Kell

答えて

1

私はそれはあなたのソースと質問から伝えるのは難しいですあなたはこの

 public void copyAll(DataSet ds, Doc doc, string rootPath, string rootTargetPath) 
    { 
     ds.T_DocumentsDataTable docTab = doc.GetDataByGeneralRoot(); 
     string datadirectory = "//ch-s-0001535/G/inetpub/DocAddWeb/DataSource/"; 
     string final = datadirectory + rootPath; 

     foreach (var row in docTab.Rows) 
     { 
      var sourceFile = "//ch-s-0001535/G/inetpub/DocAddWeb/DataSource/" + row["URL"].ToString(); 
      string targetPath = rootTargetPath + row["URL"].ToString(); 
      File.Copy(sourceFile, rootTargetPath); 
     } 
    } 
+1

'+'の代わりに 'Path.Combine()'を使ってパス要素を結合します。 – CodeCaster

+0

@CodeCaster:同意しました。 – Kell

+0

ありがとうございました! rootTargetPathはファイルではなくディレクトリであるという唯一の問題です。 – SuperDoc

関連する問題