2015-04-29 38 views
0

在我的應用程序可能有三條路徑如何將文件從一個路徑移動到另一個在C#

  1. \共享\ 1.txt的
  2. \共享\
  3. \共享\ *。TXT

此文件路徑將會變量。

現在我該如何檢查路徑是單個文件還是多個文件,或者是否有通配符? &然後將它們移動到另一條路徑。

+2

像'Directory.GetFiles(@ 「C:\共享\」, 「* .TXT」)的ForEach(文件=> File.Move(文件,路徑.Combine(@「C:\ Destination」,Path.GetFileName(file))));' –

+0

檢查widcard:'Boolean isWildCard = path.ContainsAny('?','*');'既然' ?'也不'''可以在路徑中使用。 –

+0

你可能想檢查一下:http://stackoverflow.com/questions/1395205/better-way-to-check-if-path-is-a-file-or-a-directory –

回答

1

好,因爲無論是*也不?可以在路徑:他們在

Char[] forbidden = Path.GetInvalidPathChars(); 

所以你可以找他們

String path = @"C:\MyData\Shared\*.txt"; 
    ... 
    Boolean isWildCard = path.ContainsAny('?', '*'); 

至於文件/目錄

Boolean isFile; 

    if (File.Exists(path)) 
    isFile = true; // file already exists 
    else if (Directory.Exists(path)) 
    isFile = false; // directory already exists 
    else if (String.Equals(Path.GetExtension(path), ".txt", StringComparison.InvariantCultureIgnoreCase)) 
    isFile = true; // has txt extension, let it be a file 
    else 
    isFile = false; 

然而,你似乎沒有必要有任何分支(isWild卡ISFILE),只是移動文件:

String path = @"C:\MyData\Shared\*.txt"; 
    ... 
    String sourceDirectory = Path.GetDirectoryName(path); 
    String destination = @"C:\Destination"; 

    Directory.GetFiles(sourceDirectory, "*.txt") 
      .ForEach(file => File.Move(file, Path.Combine(destination, Path.GetFileName(file)))); 
相關問題