フォルダの作成、削除、移動、タイムスタンプの取得と設定

 System.IO名前空間のDirecroryクラス(またはDirecroryInfoクラス)のメソッドを使うことにより、フォルダ関係の様々な処理を行うことができます。

以下にDirecroryクラスの使用例を示します。

[VB.NET]
'フォルダの作成
'"C:/TEST"フォルダが存在しなくても"C:/TEST/SUBTEST"が作成される
System.IO.Directory.CreateDirectory("C:/TEST/SUBTEST")

'フォルダの内容の移動(名前の変更)
'"C:/TEST"の内容を"C:/TEST1/A"へ移動する
'移動先フォルダは存在してなく、移動元と同じドライブにあること
'移動先フォルダは移動元フォルダのサブフォルダではダメ
'"C:/TEST1"フォルダが存在していなければダメ
'属性も受け継がれる
System.IO.Directory.Move("C:/TEST", "C:/TEST1/A")

'フォルダの削除する
'"C:/TEST"を根こそぎ(サブフォルダ、ファイルも)削除する
'"C:/TEST"以下に読み取り専用ファイルがあるとエラーが出る
System.IO.Directory.Delete("C:/TEST", True)


'作成日時の取得(DateTime値で返される)
Console.WriteLine(System.IO.Directory.GetCreationTime("C:/TEST"))

'更新日時の取得(DateTime値で返される)
Console.WriteLine(System.IO.Directory.GetLastWriteTime("C:/TEST"))

'アクセス日時の取得(DateTime値で返される)
Console.WriteLine(System.IO.Directory.GetLastAccessTime("C:/TEST"))


'カレントディレクトリの取得
Console.WriteLine(System.IO.Directory.GetCurrentDirectory())

'このコンピュータの理論ドライブ名をすべて取得
Console.WriteLine(System.IO.Directory.GetLogicalDrives())

'ルートディレクトリの取得(下の例では"C:/")
'"C:/TEST"が存在している必要はない
Console.WriteLine(System.IO.Directory.GetDirectoryRoot("C:/TEST"))

'親ディレクトリの取得(下の例では"C:/TEST")
'"C:/TEST/A"が存在している必要はない
Console.WriteLine(System.IO.Directory.GetParent("C:/TEST/A"))


'カレントディレクトリの設定
System.IO.Directory.SetCurrentDirectory("C:/TEST")

'作成日時の設定(現在の時間にする)
System.IO.Directory.SetCreationTime("C:/TEST", DateTime.Now)

'更新日時の設定
System.IO.Directory.SetLastWriteTime("C:/TEST", DateTime.Now)

'アクセス日時の設定
System.IO.Directory.SetLastAccessTime("C:/TEST", DateTime.Now)
[C#]
//フォルダの作成
//"C:/TEST"フォルダが存在しなくても"C:/TEST/SUBTEST"が作成される
System.IO.Directory.CreateDirectory(@"C:/TEST/SUBTEST");

//フォルダの内容の移動(名前の変更)
//"C:/TEST"の内容を"C:/TEST1/A"へ移動する
//移動先フォルダは存在してなく、移動元と同じドライブにあること
//移動先フォルダは移動元フォルダのサブフォルダではダメ
//"C:/TEST1"フォルダが存在していなければダメ
//属性も受け継がれる
System.IO.Directory.Move(@"C:/TEST", @"C:/TEST1/A");

//フォルダの削除する
//"C:/TEST"を根こそぎ(サブフォルダ、ファイルも)削除する
//"C:/TEST"以下に読み取り専用ファイルがあるとエラーが出る
System.IO.Directory.Delete(@"C:/TEST", true);


//作成日時の取得(DateTime値で返される)
Console.WriteLine(System.IO.Directory.GetCreationTime(@"C:/TEST"));

//更新日時の取得(DateTime値で返される)
Console.WriteLine(System.IO.Directory.GetLastWriteTime(@"C:/TEST"));

//アクセス日時の取得(DateTime値で返される)
Console.WriteLine(System.IO.Directory.GetLastAccessTime(@"C:/TEST"));


//カレントディレクトリの取得
Console.WriteLine(System.IO.Directory.GetCurrentDirectory());

//このコンピュータの理論ドライブ名をすべて取得
Console.WriteLine(System.IO.Directory.GetLogicalDrives());

//ルートディレクトリの取得(下の例では"C:/")
//"C:/TEST"が存在している必要はない
Console.WriteLine(System.IO.Directory.GetDirectoryRoot(@"C:/TEST"));

//親ディレクトリの取得(下の例では"C:/TEST")
//"C:/TEST/A"が存在している必要はない
Console.WriteLine(System.IO.Directory.GetParent(@"C:/TEST/A"));


//カレントディレクトリの設定
System.IO.Directory.SetCurrentDirectory(@"C:/TEST");

//作成日時の設定(現在の時間にする)
System.IO.Directory.SetCreationTime(@"C:/TEST", DateTime.Now);

//更新日時の設定
System.IO.Directory.SetLastWriteTime(@"C:/TEST", DateTime.Now);

//アクセス日時の設定
System.IO.Directory.SetLastAccessTime(@"C:/TEST", DateTime.Now);

Directoryクラスのメソッドを表にまとめてみました。

Directoryのメソッド説明注意事項
CreateDirectoryディレクトリを作成する作成するディレクトリの親ディレクトリが存在しない時は、親ディレクトリも作成される。
Deleteディレクトリを削除する2番目の引数にTrueを指定しない時は、空のディレクトリしか削除できない。
削除するディレクトリ自身や、その中にあるファイル、サブディレクトリに読み取り専用属性があると、エラーとなる。詳しくは、「読み取り専用ファイルがあるときでもフォルダを削除する」。
Moveディレクトリを移動する移動先ディレクトリが存在してはいけない。
移動先のディレクトリは移動元のディレクトリと同じドライブ(ボリューム)でなければならない。
移動先のディレクトリが移動元のサブディレクトリではいけない。
移動先のディレクトリの親ディレクトリは存在していなければならない
移動後はファイル、ディレクトリの属性が受け継がれる。
GetCreationTimeディレクトリの作成日時を取得する 
GetCreationTimeUtc世界協定時刻(UTC)形式で、ディレクトリの作成日時を取得する.NET Framework 1.1以降。
GetLastAccessTimeディレクトリの最終アクセス日時を取得する 
GetLastAccessTimeUtc世界協定時刻(UTC)形式で、ディレクトリの最終アクセス日時を取得する.NET Framework 1.1以降。
GetLastWriteTimeディレクトリの最終更新日時を取得する 
GetLastWriteTimeUtc世界協定時刻(UTC)形式で、ディレクトリの最終更新日時を取得する.NET Framework 1.1以降。
SetCreationTimeディレクトリの作成日時を設定する 
SetCreationTimeUtc世界協定時刻(UTC)形式で、ディレクトリの作成日時を設定する.NET Framework 1.1以降。
SetLastAccessTimeディレクトリの最終アクセス日時を設定する 
SetLastAccessTimeUtc世界協定時刻(UTC)形式で、ディレクトリの最終アクセス日時を設定する.NET Framework 1.1以降。
SetLastWriteTimeディレクトリの最終更新日時を設定する 
SetLastWriteTimeUtc世界協定時刻(UTC)形式で、ディレクトリの最終更新日時を設定する.NET Framework 1.1以降。
GetCurrentDirectoryカレントディレクトリを取得する 
GetDirectoryRootボリューム情報やルート情報を取得するディレクトリが存在している必要はない。
GetParent親ディレクトリを取得するディレクトリが存在している必要はない。
GetDirectoriesディレクトリ内のサブディレクトリを取得する.NET Framework 1.1以前では、サブディレクトリ内のディレクトリは検索しない。.NET Framework 2.0以降では、SearchOption.AllDirectoriesを指定することにより可能。
GetFilesディレクトリ内のファイルを取得する.NET Framework 1.1以前では、サブディレクトリ内のディレクトリは検索しない。.NET Framework 2.0以降では、SearchOption.AllDirectoriesを指定することにより可能。
GetFileSystemEntriesディレクトリ内のファイルとディレクトリを取得するサブディレクトリ内のファイルとディレクトリは検索しない
Existsディレクトリが存在するか調べる 

フォルダをコピーする方法は、「フォルダをコピーする」で説明します。

.NET Framework 2.0以降で、My.Computer.FileSystemを使用する方法

.NET Framework 2.0以降のVB.NETでは、My.Computer.FileSystemを使用して同様のことができます。(ただし、一部のメソッドは大きく異なります。)

前述したDirecroryクラスと同様の機能のMy.Computer.FileSystemのメンバ(CurrentDirectoryのみプロパティでそれ以外はメソッド)を以下に表にして紹介します。

メンバ名対応するDirecroryクラスのメソッド説明
CurrentDirectoryGetCurrentDirectoryとSetCurrentDirectoryカレントディレクトリを取得、設定する。
CopyDirectory(なし)ディレクトリをコピーする。詳しくは、こちら
CreateDirectoryCreateDirectoryディレクトリを作成する。
DeleteDirectoryDelete
(ただし、大きく異なる。詳しくは、こちら。)
ディレクトリを削除する。
DirectoryExistsExistsディレクトリが存在するか調べる。
GetDirectoriesGetDirectoriesディレクトリ内のサブディレクトリを取得する。
GetDirectoryInfo(なし、「new DirectoryInfo」と同じ)DirectoryInfoオブジェクトを取得する。
GetFilesGetFilesディレクトリ内のファイルを取得する。
MoveDirectoryMove
(ただし、大きく異なる。詳しくは、こちら。)
ディレクトリを移動する。
RenameDirectoryMoveディレクトリ名を変更する。
違うドライブにフォルダを移動させる

Direcrory.Moveメソッドは、移動先のフォルダは移動元のフォルダと同じドライブでなければならないなど多くの制限がありましたが、My.Computer.FileSystem.MoveDirectoryメソッドにはそのような制限がありません。しかも、エクスプローラでフォルダを移動したときのように、ダイアログによりコピーの進行状況を表示し、途中でユーザーがキャンセルすることもできます。

下の例では、フォルダ"C:/A"を"C:/B"に移動しています。ユーザーインターフェイスを表示するためにUIOption.AllDialogsを指定し(デフォルトでは表示されない)、ユーザーがキャンセルしても例外(IOException)をスローしないようにUICancelOption.DoNothingを指定しています(デフォルトでは、例外がスローされる)。

[VB.NET]
'ディレクトリ"C:/A"を"C:/B"に移動する
My.Computer.FileSystem.MoveDirectory("C:/A", "C:/B", _
    FileIO.UIOption.AllDialogs, FileIO.UICancelOption.DoNothing)
[C#]
//参照にMicrosoft.VisualBasic.dllが追加されている必要がある

//ディレクトリ"C:/A"を"C:/B"に移動する
Microsoft.VisualBasic.FileIO.FileSystem.MoveDirectory(
    "C://A",
    Microsoft.VisualBasic.FileIO.UIOption.AllDialogs,
    Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin,
    Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing);
  • 履歴:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值