2010-05-08 5 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() 대신 백 슬래시와 함께 자신을 다루는 ... –

+0

내가 뭔가를 놓치고 있습니까? 모든 System.IO 클래스는 파일과 디렉토리를 공백으로 처리합니다. 기술적으로도 DOS조차도 파일 시스템 측면에서 특정 명령 줄 도구가 공백을 올바르게 구문 분석하지 못했을뿐입니다. – Aaronaught

+0

Path.Combine은 필수적입니다. 슬래시를 직접 시도하면 공백이있는 파일을 시도 할 때까지는 오류가 발생합니다. – stuartdotnet

답변

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

대린 이후의 상황과 훨씬 비슷해 보입니다. 고맙습니다. –

+0

이제 전달 된 사용자가 통과 한 백 슬래시가 포함되어 있지 않은지 확인해야합니다. 그렇지 않으면 충돌합니다. –

관련 문제