2012-03-07 2 views
3

다음과 같은 C# 프로그램이 있습니다. 그러나 그것은 실패합니다. 보호 수준으로 인해 'System.IO.FileSystemInfo.FullPath'에 액세스 할 수 없습니다. 그리고 FullPath에는 파란색 밑줄이 그어져 있습니다. 당신이 찾고있는이 건물은 FullName라고"C : System.IO.FileSystemInfo.FullPath '보호 수준으로 인해 액세스 할 수 없습니다"오류가 발생했습니다.

protected void Main(string[] args) 
{ 
    DirectoryInfo parent = new DirectoryInfo(@"C:\Users\dell\Desktop\rename"); 
    foreach (DirectoryInfo child in parent.GetDirectories()) 
    { 
     string newName = child.FullPath.Replace('_', '-'); 

     if (newName != child.FullPath) 
     { 
      child.MoveTo(newName); 
     } 
    } 
} 
+0

아마도 당신은 se FullName이 아니라 FullName. FullPath는 보호 된 필드이므로이 방법으로 사용하도록 설계되지 않았습니다. 액세스 한정자에 대한 설명은 http://msdn.microsoft.com/en-us/library/ms173121.aspx를 참조하십시오. FileSystemInfo의 필드/속성에 대해서는 다음을 참조하십시오. http://msdn.microsoft.com/en-us/library/system.io.filesysteminfo.aspx –

+0

도움을 주셔서 감사합니다 :) FullName으로 변경하고 " public static "을"protected "로 변경하십시오. 이제 작동합니다. 나는이 질문을 끝내고있다. 다시 한 번 감사드립니다 :) – cethint

+0

필드가 보호되어 있는지 항상 확인할 수 있습니다. F12를 눌러서 // 요약 : // System.IO.FileInfo 및 System.IO.DirectoryInfo // 개체에 대한 기본 클래스를 제공합니다. [직렬화] [대해 ComVisible (사실)] 공공 추상 클래스 FileSystemInfo : MarshalByRefObject를, { // 개요를 ISerializable : // 디렉토리 나 파일의 완전한 경로를 나타냅니다. 보호 된 문자열 FullPath; –

답변

6

하지 FullPath : 대신 FullPath는의

static void Main() 
{ 
    DirectoryInfo parent = new DirectoryInfo(@"C:\Users\dell\Desktop\rename"); 
    foreach (DirectoryInfo child in parent.GetDirectories()) 
    { 
     string newName = child.FullName.Replace('_', '-'); 

     if (newName != child.FullName) 
     { 
      child.MoveTo(newName); 
     } 
    } 
} 
+0

감사합니다;) 작동합니다. – cethint

관련 문제