13,009
回編集
(ページの作成:「== 概要 == C#におけるディレクトリ操作は、<code>System.IO</code>名前空間に含まれる<code>Directory</code>クラスと<code>DirectoryInfo</code>クラスを使用して行う。<br> これらのクラスを使用することにより、ファイルシステム上のディレクトリに関する様々な操作や情報取得が可能になる。<br> <br> <code>Directory</code>クラスは静的メソッドを提供しており、特定のディ…」) |
編集の要約なし |
||
45行目: | 45行目: | ||
ディレクトリ操作を行う場合は、パフォーマンスにも注意が必要となる。<br> | ディレクトリ操作を行う場合は、パフォーマンスにも注意が必要となる。<br> | ||
大量のファイルやディレクトリを扱う場合、非同期メソッドの使用や並列処理を検討することにより、アプリケーションの応答性を向上させることができる。<br> | 大量のファイルやディレクトリを扱う場合、非同期メソッドの使用や並列処理を検討することにより、アプリケーションの応答性を向上させることができる。<br> | ||
<br><br> | |||
== ディレクトリの作成 == | |||
ディレクトリの作成は高速であるため、非同期処理は必要ない。<br> | |||
ただし、ネットワークドライブ上での操作等、遅延が予想される特殊なケースでは、<code>Directory.CreateDirectoryAsync</code>メソッド (.NET 6以降で使用可能) を推奨する。<br> | |||
<br> | |||
==== 新規作成 ==== | |||
以下の例では、ディレクトリを新規作成している。<br> | |||
ただし、既存のディレクトリがある場合は何もしない。<br> | |||
<br> | |||
<syntaxhighlight lang="c#"> | |||
using System; | |||
using System.IO; | |||
class Program | |||
{ | |||
static void Main(string[] args) | |||
{ | |||
string path = "/home/user/newDirectory"; | |||
// ディレクトリを作成 | |||
Directory.CreateDirectory(path); | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
==== 既存のディレクトリを確認してから新規作成 ==== | |||
既存ディレクトリを確認する方法は、不要な処理を避ける場合に有効である。<br> | |||
<br> | |||
<syntaxhighlight lang="c#"> | |||
using System; | |||
using System.IO; | |||
class Program | |||
{ | |||
static void Main(string[] args) | |||
{ | |||
string path = "/home/user/newDirectory"; | |||
// ディレクトリが存在しない場合のみ作成 | |||
if (!Directory.Exists(path)) | |||
{ | |||
Directory.CreateDirectory(path); | |||
Console.WriteLine($"ディレクトリの新規作成: {path}"); | |||
} | |||
else | |||
{ | |||
Console.WriteLine($"ディレクトリは既に存在する: {path}"); | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
==== サブディレクトリを含む複数階層のディレクトリを新規作成 ==== | |||
複数階層の作成は、複雑なディレクトリ構造を1度に作成することができる。<br> | |||
<br> | |||
<syntaxhighlight lang="c#"> | |||
using System; | |||
using System.IO; | |||
class Program | |||
{ | |||
static void Main(string[] args) | |||
{ | |||
string path = "/home/user/parent/child/grandchild"; | |||
try | |||
{ | |||
// 複数階層のディレクトリを1度に新規作成 | |||
DirectoryInfo di = Directory.CreateDirectory(path); | |||
Console.WriteLine($"ディレクトリ構造を新規作成: {di.FullName}"); | |||
// 作成されたディレクトリの情報を表示 | |||
Console.WriteLine($"作成日時: {di.CreationTime}"); | |||
Console.WriteLine($"親ディレクトリ: {di.Parent.FullName}"); | |||
} | |||
catch (Exception e) | |||
{ | |||
Console.WriteLine($"エラーが発生: {e.Message}"); | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br><br> | <br><br> | ||