FANDOM


特殊なディレクトリの取得 編集

Windowsが定義する特殊なディレクトリを取得する場合は次のようなコードとなります。

System.Environment.GetFolderPath(Environment.SpecialFolder.Personal); // マイドキュメントを取得
定義名 説明 取得パスのサンプル
Environment.SpecialFolder.Personal 現在のユーザーのマイドキュメント C:\Users\XXXX\My Documents
Environment.SpecialFolder.Desktop 現在のユーザーのデスクトップ C:\Users\XXXX\Desktop
Environment.SpecialFolder.Favorites 現在のユーザーのお気に入りフォルダ C:\Users\XXXX\Favorites
Environment.SpecialFolder.ProgramFiles プログラムフォルダを取得します。 C:\Program Files
Environment.SpecialFolder.Windows ウィンドウズのシステムフォルダを取得します。 C:\Windows
Environment.SpecialFolder.Startup 現在のユーザーのスタートアップフォルダを取得します。

ドライブ操作 編集

ドライブの一覧を取得する 編集

string[] drives = Directory.GetLogicalDrives();
foreach (string str in drives) {  
	System.Console.WriteLine(str);  
}

出力は次のようになります。

C:\
D:\
E:\

ドライブの容量を取得 編集

DriveInfo dinfo = new DriveInfo("C");
Console.WriteLine("領域サイズ:" + dinfo.TotalSize);
Console.WriteLine("空き容量:" + dinfo.TotalFreeSpace);
Console.WriteLine("現在のユーザーの空き容量:" + info.AvailableFreeSpace);

AvailableFreeSpaceプロパティはクォーターの機能により実際にユーザーが使用できるディスクサイズが制限されている場合の容量となります。
純粋にシステムにファイルを作成する場合に、作成可能かどうかを知りたい場合はAvailableFreeSpaceプロパティの値を使うようにします。

ディレクトリ操作 編集

ディレクトリの有無 編集

指定したパスがディレクトリとして存在するかどうかをチェックするにはDirectory.Exists()を使用します。パスがファイルを示す場合、この関数はFalseを返します。

string testDirectory = @"c:\tmp";
if( Directory.Exists(testDirectory) )
{	
	// ディレクトリは存在する
}
else
{
	// ディレクトリは存在しない
}

作成・削除・移動 編集

ディレクトリの作成ではCreateDirectory()を使用します。
CreateDirectory()は指定したディレクトリが存在する場合でもエラーは出しません。
存在しないディレクトリ階層を指定した場合、途中の階層もすべて作成します。

// [ディレクトリの作成]
Directory.CreateDirectory(@"c:\MyDirectory");
Directory.CreateDirectory(@"c:\MyDirectory2\MySubdirectory");

ディレクトリの削除ではDelete()を使用します。
削除する対象のディレクトリは空のディレクトリでなければなりません。(特殊モードを使用することで削除可能)

Directory.Delete(@"c:\MyDirectory");
Directory.Delete(@"c:\MyDirectory2\MySubdirectory");
 
Directory.Delete(@"c:\MyDirectoryNotEmpty", true); // 空のディレクトリではなくても削除可能。
												   // 対象ディレクトリの中身とディレクトリそのものをすべて削除する。
												   // 対象ディレクトリ内にサブディレクトリがある場合、サブディレクトリも含めて削除するので注意。


ディレクトリの移動はMove()を使用します。
また、Move()を使ってディレクトリのリネームも可能です。
ただし主な制限として、ボリュームを跨いでディレクトリを移動することはできない。


ディレクトリに含まれるファイル一覧の取得 編集

DirectoryInfo.GetFiles()はディレクトリに含まれるファイルのみを返します。
この関数が返すファイルコレクションの順番は不規則であり不定です。呼び出す度に順番が変わる可能性があります。

  1. string testDirectory = @"c:\tmp";
  2.  
  3. var dirinfo = new DirectoryInfo(testDirectory);
  4.  
  5. foreach(FileInfo f in dirinfo.GetFiles())
  6. {
  7. 	Console.WriteLine("FileName : {0}", f.Name);
  8. }

GetFiles(String, SearchOption)を使用する事で、現在のディレクトリとそこに含まれるサブディレクトリのファイルを取得することができます。
サブディレクトリまで含めてファイルを取得する場合、リンクファイルが含まれているとそのリンク先のディレクトリやファイルを取得します。ただし、リンク先が元のディレクトリを指す場合などではファイルの検索が無限ループしてしまう可能性があります。


ディレクトリに含まれるディレクトリ一覧の取得 編集

  1. string testDirectory = @"c:\tmp";
  2.  
  3. var dirinfo = new DirectoryInfo(testDirectory);
  4.  
  5. foreach(DirectoryInfo f in dirinfo.GetCirectories())
  6. {
  7. 	Console.WriteLine("DirectoryName : {0}", f.Name);
  8. }


ファイル操作 編集

ファイルの内容についてはファイル操作を参照してださい。

ファイルの有無チェック 編集

指定したパスがファイルとして存在するかどうかをチェックするにはFile.Exists()を使用します。パスがディレクトリを示す場合、この関数はFalseを返します。

string fileName = @"C:\test.txt";
if (System.IO.File.Exists(fileName))
{
    // 存在するときの処理
}
else
{
    // 存在しないときの処理
}

ファイルのコピー 編集

Fileクラスの静的メソッドを使う方法と、FileInfoクラスのメンバを使う方法があります。

  1. // ◆Fileクラスの静的メソッド
  2. //
  3. // C:\test.txtをC:\test1.txtにコピーします。
  4. // ただし、C:\test1.txt がすでにあるときは、例外をスローします。
  5. System.IO.File.Copy(@"C:\test.txt", @"C:\test1.txt");
  6.  
  7. // FileInfoクラスのメンバ
  8. FileInfo fi = new FileInfo(@"C:\test.txt");
  9. fi.CopyTo(@"c:\test1.txt", true); // 「test1.txt」にコピーしました

ファイルの削除 編集

System.IO.File.Delete(@"c:\test.txt");

FileInfoクラスを使ってファイルを削除することもできます。

ファイルの更新チェック 編集

サブフォルダもチェック対象にする 編集

IncludeSubdirectoriesプロパティにTrueをセットする。

参照 編集

広告ブロッカーが検出されました。


広告収入で運営されている無料サイトWikiaでは、このたび広告ブロッカーをご利用の方向けの変更が加わりました。

広告ブロッカーが改変されている場合、Wikiaにアクセスしていただくことができなくなっています。カスタム広告ブロッカーを解除してご利用ください。

FANDOMでも見てみる

おまかせWiki