2012-03-07 15 views
3

私は次のようなC#プログラムを持っています。しかしそれは失敗する。 保護レベルのため 'System.IO.FileSystemInfo.FullPath'にアクセスできません。 フルパスに青で下線が引かれています。"C:System.IO.FileSystemInfo.FullPath 'の保護レベルが" C#のエラーのためアクセスできません。

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ではなくFullPath。 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

あなたが探しているプロパティがFullNameと呼ばれている、いない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

関連する問題