目次
|
- ディレクトリ情報の取得
- 作成日時を知りたい。
- 更新日時を知りたい。
- アクセス日時を知りたい。
- 名前を知りたい。
- 拡張子を知りたい。
- フルパス名を知りたい。
- 親ディレクトリを知りたい。
- ルートディレクトリを知りたい。
-
アーカイブ、圧縮、ディレクトリ、非表示、オフライン、読み取り専用、システム、一時ファイルのアトリビュートを知りたい。
- ディレクトリの操作
- ディレクトリを作成したい。
- サブディレクトリを作成したい。
- ディレクトリを移動したい。
- ディレクトリの削除
- 指定したディレクトリ以下をすべて削除
- ファイル情報の取得
- 作成日時を知りたい。
- 更新日時を知りたい。
- アクセス日時を知りたい。
- 名前を知りたい。
- 拡張子を知りたい。
- フルパス名を知りたい。
- ディレクトリ情報を知りたい。
- ディレクトリ名を知りたい。
- ファイルサイズを知りたい。
- システムの固定フォルダへのパスの取得
- ローミングユーザのアプリケーション固有データのためのディレクトリ
-
すべてのユーザーが使用するアプリケーション固有のデータのためのディレクトリ
- アプリケーション間で共有されるコンポーネント用のディレクトリ
- クッキー用のディレクトリ
- デスクトップのディレクトリ
- インターネットのお気に入りのディレクトリ
- インターネットの履歴項目のディレクトリ
- 一時インターネット ファイルのディレクトリ
- 非ローミングユーザーが使用するアプリケーション固有のディレクトリ
- ドキュメントの共通リポジトリのディレクトリ
- プログラムファイルのディレクトリ
- プログラム グループを格納するディレクトリ
- 最近使用したドキュメントを格納するディレクトリ
- "送る"メニューのディレクトリ
- "スタート"メニューのディレクトリ
- "スタートアップ"のディレクトリ
- システムディレクトリ
- ドキュメントテンプレートのディレクトリ
- FileInfo を使った ファイルのアクセス
- バイナリーファイルのアクセス
- テキストファイルのアクセス
- ファイルのオープンモード
- ファイルに追加で書き込みたい。
-
新しいファイルを作成したい。すでに存在する場合は、頭から上書きしたい。
- 新しいファイルを作成したい。すでに存在する場合は、エラーにしたい。
- ファイルをオープンしたい。存在しない場合は、エラーにしたい。
-
ファイルをオープンしたい。存在しない場合は新しいファイルを作成したい。
- ファイルをオープンしたい。開いた後にサイズが 0
バイトになるようにしたい。
- ファイルアクセス
- ファイルの読取りアクセス
- ファイルへの読取り/書込みアクセス
- ファイルへの書込みアクセス
- ファイルの共有
- 子プロセスで継承できるようにしたい。
- 現在のファイルの共有を解除したい。
- 読取りを許可にしたい。
- 読取り、書込みを許可にしたい。
- 書込みを許可にしたい。
- StreamReader / StreamWriter
を使ったテキストファイルのリードライト
- テキストファイルのリード
- テキストファイルのライト
- ドライブ情報の取得
|
|
| System,IO.DirectoryInfo dirInfo = new
System.IO.DirectoryInfo(@"path"); dirInfo.CreationTime; |
| System,IO.DirectoryInfo dirInfo = new
System.IO.DirectoryInfo(@"path"); dirInfo.LastWriteTime; |
| System,IO.DirectoryInfo dirInfo = new
System.IO.DirectoryInfo(@"path"); dirInfo.LastAccessTime; |
| System,IO.DirectoryInfo dirInfo = new
System.IO.DirectoryInfo(@"path"); dirInfo.Name; |
| System,IO.DirectoryInfo dirInfo = new
System.IO.DirectoryInfo(@"path"); dirInfo.Extension; |
| System,IO.DirectoryInfo dirInfo = new
System.IO.DirectoryInfo(@"path"); dirInfo.FullName; |
| System,IO.DirectoryInfo dirInfo = new
System.IO.DirectoryInfo(@"path"); dirInfo.Parent; |
| System,IO.DirectoryInfo dirInfo = new
System.IO.DirectoryInfo(@"path"); dirInfo.Root; |
| System,IO.DirectoryInfo dirInfo = new
System.IO.DirectoryInfo(@"path"); dirInfo.Attributes |
|
| dirInfo = new DirectoryInfo(@".\test"); if ( dirInfo.Exists == false ) { dirInfo.Create(); }
注意1: ディレクトリが存在する場合には、IOException、パーミッションがない場合には
SecurityExceptionが上がる。 |
| System,IO.DirectoryInfo dirInfo = new
System.IO.DirectoryInfo(@"path"); dirInfo.CreateSubdirectory("SubDir"); |
| System,IO.DirectoryInfo dirInfo = new
System.IO.DirectoryInfo(@"path"); dirInfo.MoveTo("DestinationDir");
注意1: ディレクトリが存在する場合には、IOException、パーミッションがない場合には
SecurityExceptionが上がる。 |
| dirInfo = new DirectoryInfo(@".\test"); dirInfo.Delete( false );
注意1: ディレクトリが空ではないのに、Delete( false )
により削除しようとすると、次の例外が発生する。 パーミッションがない場合には SecurityExceptionが上がる。 |
| dirInfo = new DirectoryInfo(@".\test"); dirInfo.Delete( true ); |
|
| System,IO.FileInfo dirInfo = new
System.IO.FileInfo(@"path"); fileInfo.CreationTime; |
| System,IO.FileInfo dirInfo = new
System.IO.FileInfo(@"path"); fileInfo.LastWriteTime; |
| System,IO.FileInfo dirInfo = new
System.IO.FileInfo(@"path"); fileInfo.LastAccessTime; |
| System,IO.FileInfo dirInfo = new
System.IO.FileInfo(@"path"); fileInfo.Name; |
| System,IO.FileInfo dirInfo = new
System.IO.FileInfo(@"path"); fileInfo.Extension; |
| System,IO.FileInfo dirInfo = new
System.IO.FileInfo(@"path"); fileInfo.FullName; |
| System,IO.FileInfo dirInfo = new
System.IO.FileInfo(@"path"); DirectoryInfo dirInfo = fileInfo.Directory; |
| System,IO.FileInfo dirInfo = new
System.IO.FileInfo(@"path"); fileInfo.DirectoryName; |
| System,IO.FileInfo dirInfo = new
System.IO.FileInfo(@"path"); fileInfo.Length; |
|
| System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); |
| System.Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); |
| System.Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFiles); |
| System.Environment.GetFolderPath(Environment.SpecialFolder.Cookies); |
| System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); |
| System.Environment.GetFolderPath(Environment.SpecialFolder.Favorites); |
| System.Environment.GetFolderPath(Environment.SpecialFolder.History); |
| System.Environment.GetFolderPath(Environment.SpecialFolder.InternetCache); |
| System.Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); |
| System.Environment.GetFolderPath(Environment.SpecialFolder.Personal); |
| System.Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles); |
| System.Environment.GetFolderPath(Environment.SpecialFolder.Programs); |
| System.Environment.GetFolderPath(Environment.SpecialFolder,Recent); |
| System.Environment.GetFolderPath(Environment.SpecialFolder.SendTo); |
| System.Environment.GetFolderPath(Environment.SpecialFolder.StartMenu); |
| System.Environment.GetFolderPath(Environment.SpecialFolder.Startup); |
| System.Environment.GetFolderPath(Environment.SpecialFolder.System); |
| System.Environment.GetFolderPath(Environment.SpecialFolder.Templates); |
|
| FileInfo fileInfo = new FileInfo("test.dat"); FileStream fs = fileInfo.Open( FileMode, [ FileAccess ] , [ FileShare ] ); byte []data = {1,2,3,4,5,6}; fs.Write(data, 0, data.Length); fs.Close();
FileMode, FileAccess, FileShare はそれぞれ次のとおり。 |
| FileInfo fileInfo3 = new FileInfo(@"..\..\Class1.cs"); StreamReader sr1 = fileInfo3.OpenText(); StreamReader srSJIS = new StreamReader(sr.BaseStream,
System.Text.Encoding.GetEncoding("sjis")); while ( str != null ) { str = srSJIS.ReadLine(); Console.WriteLine( str ); } srSJIS.Close(); sr.Close();
注意: ファイルのオープンモード、ファイルアクセスの設定、ファイル共有の設定の必要がなければ、FileInfo から OpenText()
でStreamReader を得るより、直接 StreamReader、StreamWriter を使う方法が楽チン。 |
|
| FileStream = FileInfo.Open ( FileMode.Append, ...) |
| FileStream = FileInfo.Open ( FileMode.Create, ...) |
| FileStream = FileInfo.Open ( FileMode.CreateNew, ...) |
| FileStream = FileInfo.Open ( FileMode.Open, ...) |
| FileStream = FileInfo.Open ( FileMode.OpenOrCreate,
...) |
| FileStream = FileInfo.Open ( FileMode.Truncate, ...) |
|
| FileStream = FileInfo.Open ( ..., FileAccess.Read ) |
| FileStream = FileInfo.Open ( ..., FileAccess.ReadWrite
) |
| FileStream = FileInfo.Open ( ..., FileAccess.Write ) |
|
| FileStream = FileInfo.Open ( ..., ...,
FileShare.Inheritable ) |
| FileStream = FileInfo.Open ( ..., ..., FileShare.None ) |
| FileStream = FileInfo.Open ( ..., ..., FileShare.Read ) |
| FileStream = FileInfo.Open ( ..., ...,
FileShare.ReadWrite ) |
| FileStream = FileInfo.Open ( ..., ..., FileShare.Write
) |
|
| FileInfo
を使わずとも、テキストファイルを読み込むだけであれば、StreamReader(ファイル名)で直接ストリームリーダを作ることができる。 この方法が楽。 ただし、エンコーディングを設定しないと、SJIS ファイルが正しく読めません。
System.IO.StreamReader streamReader = new System.IO.StreamReader(filename,
System.Text.Encoding.GetEncoding("sjis")); string str = streamReader.ReadToEnd(); streamReader.Close();
サンプルコードはこちら。 |
| FileInfo
を使わずとも、テキストファイルを書くだけであれば、StreamWriter(ファイル名)で直接ストリームライターを作ることができる。 この方法が楽。 ただし、エンコーディングを設定しないと、正しく書けません。
System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(filename,
false, System.Text.Encoding.GetEncoding("sjis")); streamWriter.Write("書き出す文字列");
streamWriter.Close();
サンプルコードはこちら。 |
|
ドライブ情報の取得について、 System.Management 名前空間を使って、 WMI (Windows Management Instrumentation)
に実装されているシステム、デバイス、アプリケーションに関する管理情報へアクセスできます。
いつきさんより教えていただきました。 感謝!
| using System.Management; // 参照の追加が必要です。 ... ManagementObject disk = new
ManagementObject("win32_logicaldisk.deviceid=\"c:\""); disk.Get();
Console.WriteLine("Description = " + disk["Description"]); Console.WriteLine("DeviceID = " + disk["DeviceID"]); Console.WriteLine("DriveType = " + disk["DriveType"]); Console.WriteLine("FileSystem = " + disk["FileSystem"]); Console.WriteLine("FreeSpace = " + disk["FreeSpace"]); Console.WriteLine("MaximumComponentLength = " +
disk["MaximumComponentLength"]); Console.WriteLine("MediaType = " + disk["MediaType"]); Console.WriteLine("Name = " + disk["Name"]); Console.WriteLine("Size = " + disk["Size"]); Console.WriteLine("SystemName = " + disk["SystemName"]); Console.WriteLine("VolumeName = " + disk["VolumeName"]); Console.WriteLine("VolumeSerialNumber = " + disk["VolumeSerialNumber"]);
|
実行結果
Description = ローカル固定ディスク DeviceID = c: DriveType = 3 FileSystem = NTFS FreeSpace = 2482167808 MaximumComponentLength = 255 MediaType = 12 Name = c: Size = 13012357120 SystemName = UCHUKAMEN VolumeName = 13GB VolumeSerialNumber = 00FE0005 |