2010-05-08 121 views
0

有大量C#示例顯示如何操作文件和目錄,但它們不可避免地使用不包含空格的文件夾路徑。在現實世界中,我需要能夠處理名稱中包含空格的文件夾中的文件。我寫下面的代碼顯示了我如何解決問題。然而,它似乎不是很優雅,我想知道是否有人有更好的方法。用C#處理名稱中包含空格的文件夾中的文件

class Program 
{ 
    static void Main(string[] args) 
    { 

     var dirPath = @args[0] + "\\"; 

     string[] myFiles = Directory.GetFiles(dirPath, "*txt"); 
     foreach (var oldFile in myFiles) 
     { 
      string newFile = dirPath + "New " + Path.GetFileName(oldFile); 
      File.Move(oldFile, newFile); 
     } 
     Console.ReadKey(); 
    } 
} 

問候, 奈傑爾Ainscoe

+3

使用Path.Combine(),而不是用反斜槓自己處理的... – 2010-05-08 17:29:36

+0

我缺少的東西?所有的'System.IO'類都用空格處理文件和目錄。從技術上講,即使是DOS,在文件系統方面,只是某些命令行工具沒有正確解析空格。 – Aaronaught 2010-05-08 17:37:15

+0

Path.Combine是至關重要的 - 如果你嘗試自己做斜槓並且在你嘗試一個帶空格的文件之前不會意識到,你會得到一個錯誤 – stuartdotnet 2014-01-20 09:27:43

回答

1
string newFile = Path.Combine(args[0], "New " + Path.GetFileName(oldFile)); 

或:

class Program 
{ 
    static void Main(string[] args) 
    { 
     Directory 
      .GetFiles(args[0], "*txt") 
      .ToList() 
      .ForEach(oldFile => { 
       var newFile = Path.Combine(
        Path.GetDirectoryName(oldFile), 
        "New " + Path.GetFileName(oldFile) 
       ); 
       File.Move(oldFile, newFile); 
      }); 
     Console.ReadKey(); 
    } 
} 
+0

看起來更像是Darin之後的東西。謝謝。 – 2010-05-08 17:40:57

+0

現在我只需要檢查用戶傳遞的路徑不包含尾部反斜槓否則它崩潰 – 2010-05-08 17:46:12

相關問題