MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
C Sharpの基礎 - ディレクトリのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
C Sharpの基礎 - ディレクトリ
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == C#におけるディレクトリ操作は、<code>System.IO</code>名前空間に含まれる<code>Directory</code>クラスと<code>DirectoryInfo</code>クラスを使用して行う。<br> これらのクラスを使用することにより、ファイルシステム上のディレクトリに関する様々な操作や情報取得が可能になる。<br> <br> <code>Directory</code>クラスは静的メソッドを提供しており、特定のディレクトリインスタンスを作成せずにディレクトリ操作を行うことができる。<br> 一方、<code>DirectoryInfo</code>クラスはオブジェクト指向のアプローチを取り、特定のディレクトリに対して複数の操作を行う場合に有効である。<br> <br> * ディレクトリの作成 *: <code>Directory.CreateDirectory</code>メソッドを使用する。 *: このメソッドは指定されたパスにディレクトリが存在しない場合、そのディレクトリを作成する。 *: 既に存在する場合は何も行わず、エラーも発生しない。 *: <br> * ディレクトリの削除 *: <code>Directory.Delete</code>メソッドを使用する。 *: ただし、空でないディレクトリを削除しようとすると例外が発生するため、注意が必要である。 *: 再帰的に削除する場合は、オーバーロードされたメソッドを使用する。 *: <br> * ディレクトリの存在確認 *: <code>Directory.Exists</code>メソッドを使用する。 *: このメソッドは指定されたパスにディレクトリが存在するかどうかをブール値で返す。 *: <br> * ディレクトリの移動や名前変更 *: <code>Directory.Move</code>メソッドを使用する。 *: このメソッドは、ソースパスとデスティネーションパスを引数に取る。 <br> ディレクトリ内のファイルやサブディレクトリの列挙には、以下に示すメソッドを使用する。<br> これらのメソッドは、検索パターンや検索オプションを指定することにより、柔軟な検索が可能である。<br> * Directory.GetFilesメソッド * Directory.GetDirectoriesメソッド * Directory.GetFileSystemEntriesメソッド <br> <code>DirectoryInfo</code>クラスを使用する場合、まずインスタンスを生成して、そのインスタンスに対してメソッドを呼び出す。<br> 例えば、DirectoryInfo di = new DirectoryInfo(@"/home/user/hoge"); のようにインスタンスを生成して、Createメソッド、Deleteメソッド、MoveToメソッド等を使用する。<br> <br> ディレクトリのセキュリティ設定や属性の取得・設定も可能である。<br> <code>Directory.GetAccessControl</code>メソッドや<code>DirectoryInfo.Attributes</code>プロパティを使用することにより、これらの情報にアクセスすることができる。<br> <br> C#でのディレクトリ操作は、エラー処理が重要となる。<br> ファイルシステムへのアクセスはI/O操作を伴うため、IOExceptionやUnauthorizedAccessException等の例外が発生する可能性があるため、<br> 適切なtry-catchブロックを使用して、これらの例外を処理することが推奨される。<br> <br> また、.NET Coreや.NET 5以降では、クロスプラットフォームの開発がサポートされているため、パス区切り文字等の違いに注意が必要である。<br> <code>Path.DirectorySeparatorChar</code>を使用することにより、プラットフォーム間の互換性を保つことができる。<br> <br> ディレクトリ操作を行う場合は、パフォーマンスにも注意が必要となる。<br> 大量のファイルやディレクトリを扱う場合、非同期メソッドの使用や並列処理を検討することにより、アプリケーションの応答性を向上させることができる。<br> <br><br> == パーミッション == .NET 5以降では、<code>System.IO.FileSystem</code>名前空間に<code>UnixFileMode</code>列挙型が追加された。<br> この列挙型を使用して、UNIX系OSのファイルパーミッションを扱うことができる。<br> <br> <u>ただし、<code>UnixFileMode</code>プロパティはLinux環境でのみ動作することに注意する。</u><br> <br> <syntaxhighlight lang="c#"> using System; using System.IO; class DirectoryPermissions { static void Main(string[] args) { // ディレクトリのパス string dirPath = $"/usr/bin"; // ディレクトリが存在するかどうかを確認 if (!Directory.Exists(dirPath)) { Console.WriteLine("指定されたディレクトリが存在しない"); return; } try { // ディレクトリの情報を取得 DirectoryInfo dirInfo = new DirectoryInfo(dirPath); // Unixファイルモードを取得 UnixFileMode mode = dirInfo.UnixFileMode; // パーミッションを8進数で表示 Console.WriteLine($"ディレクトリ: {dirPath}"); Console.WriteLine($"パーミッション: {Convert.ToString((int)mode, 8).PadLeft(4, '0')}"); // 詳細なパーミッション情報を表示 Console.WriteLine("詳細:"); Console.WriteLine($"ユーザー: {((mode & UnixFileMode.UserRead) != 0 ? "r" : "-")}" + $"{((mode & UnixFileMode.UserWrite) != 0 ? "w" : "-")}" + $"{((mode & UnixFileMode.UserExecute) != 0 ? "x" : "-")}"); Console.WriteLine($"グループ: {((mode & UnixFileMode.GroupRead) != 0 ? "r" : "-")}" + $"{((mode & UnixFileMode.GroupWrite) != 0 ? "w" : "-")}" + $"{((mode & UnixFileMode.GroupExecute) != 0 ? "x" : "-")}"); Console.WriteLine($"その他: {((mode & UnixFileMode.OtherRead) != 0 ? "r" : "-")}" + $"{((mode & UnixFileMode.OtherWrite) != 0 ? "w" : "-")}" + $"{((mode & UnixFileMode.OtherExecute) != 0 ? "x" : "-")}"); } catch (Exception ex) { Console.WriteLine($"エラーが発生: {ex.Message}"); } } } </syntaxhighlight> <br><br> __FORCETOC__ [[カテゴリ:C_Sharp]]
C Sharpの基礎 - ディレクトリ
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse