宇宙仮面の
C# Programming

 
Image

ファイルとディレクトリの操作

開発環境: Visual Studio 2003

目次

  1. ディレクトリ情報の取得
    1. 作成日時を知りたい。
    2. 更新日時を知りたい。
    3. アクセス日時を知りたい。
    4. 名前を知りたい。
    5. 拡張子を知りたい。
    6. フルパス名を知りたい。
    7. 親ディレクトリを知りたい。
    8. ルートディレクトリを知りたい。
    9. アーカイブ、圧縮、ディレクトリ、非表示、オフライン、読み取り専用、システム、一時ファイルのアトリビュートを知りたい。
  2. ディレクトリの操作
    1. ディレクトリを作成したい。
    2. サブディレクトリを作成したい。
    3. ディレクトリを移動したい。
    4. ディレクトリの削除
    5. 指定したディレクトリ以下をすべて削除
  3. ファイル情報の取得
    1. 作成日時を知りたい。
    2. 更新日時を知りたい。
    3. アクセス日時を知りたい。
    4. 名前を知りたい。
    5. 拡張子を知りたい。
    6. フルパス名を知りたい。
    7. ディレクトリ情報を知りたい。
    8. ディレクトリ名を知りたい。
    9. ファイルサイズを知りたい。
  4. システムの固定フォルダへのパスの取得
    1. ローミングユーザのアプリケーション固有データのためのディレクトリ
    2. すべてのユーザーが使用するアプリケーション固有のデータのためのディレクトリ
    3. アプリケーション間で共有されるコンポーネント用のディレクトリ
    4. クッキー用のディレクトリ
    5. デスクトップのディレクトリ
    6. インターネットのお気に入りのディレクトリ
    7. インターネットの履歴項目のディレクトリ
    8. 一時インターネット ファイルのディレクトリ
    9. 非ローミングユーザーが使用するアプリケーション固有のディレクトリ
    10. ドキュメントの共通リポジトリのディレクトリ
    11. プログラムファイルのディレクトリ
    12. プログラム グループを格納するディレクトリ
    13. 最近使用したドキュメントを格納するディレクトリ
    14. "送る"メニューのディレクトリ
    15. "スタート"メニューのディレクトリ
    16. "スタートアップ"のディレクトリ
    17. システムディレクトリ
    18. ドキュメントテンプレートのディレクトリ
  5. FileInfo を使った ファイルのアクセス
    1. バイナリーファイルのアクセス
    2. テキストファイルのアクセス
  6. ファイルのオープンモード
    1. ファイルに追加で書き込みたい。
    2. 新しいファイルを作成したい。すでに存在する場合は、頭から上書きしたい。
    3. 新しいファイルを作成したい。すでに存在する場合は、エラーにしたい。
    4. ファイルをオープンしたい。存在しない場合は、エラーにしたい。
    5. ファイルをオープンしたい。存在しない場合は新しいファイルを作成したい。
    6. ファイルをオープンしたい。開いた後にサイズが 0 バイトになるようにしたい。
  7. ファイルアクセス
    1. ファイルの読取りアクセス
    2. ファイルへの読取り/書込みアクセス
    3. ファイルへの書込みアクセス
  8. ファイルの共有
    1. 子プロセスで継承できるようにしたい。
    2. 現在のファイルの共有を解除したい。
    3. 読取りを許可にしたい。
    4. 読取り、書込みを許可にしたい。
    5. 書込みを許可にしたい。
  9. StreamReader / StreamWriter を使ったテキストファイルのリードライト
    1. テキストファイルのリード
    2. テキストファイルのライト
  10. ドライブ情報の取得

ディレクトリ情報の取得

作成日時を知りたい。

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 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, ...)

ファイルをオープンしたい。開いた後にサイズが 0 バイトになるようにしたい。

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 )

StreamReader / StreamWriter を使ったテキストファイルのリードライト

テキストファイルのリード

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

 

FileInfo, DirectoryInfo 関連のサンプルコード
using System;
using System.IO;

namespace File
{
        /// <summary>
        /// Class1 の概要の説明です。
        /// </summary>
        class Class1
        {
                /// <summary>
                /// アプリケーションのメイン エントリ ポイントです。
                /// </summary>
                [STAThread]
                static void Main(string[] args)
                {
                        // System.Environment.GetFolderPath
                        TestSystemSpecificPath();

                        // System.IO.DirectoryInfo
                        TestDirectoryInfo();

                        // System.IO.FileInfo
                        TestFileInfo();

                        Console.ReadLine();
                }

                private static void TestSystemSpecificPath()
                {

                        //
                        // ----------------- システムの固定フォルダへのパス ---------------
                        //
                        Console.WriteLine("\n--------- システムの固定フォルダへのパス --------");
                        // ローミングユーザのアプリケーション固有データのためのディレクトリ
                        Console.WriteLine("ApplicationData:\t{0}", System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
                        // すべてのユーザーが使用するアプリケーション固有のデータのためのディレクトリ
                        Console.WriteLine("CommonApplicationData:\t{0}", System.Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData));
                        // アプリケーション間で共有されるコンポーネント用のディレクトリ
                        Console.WriteLine("CommonProgramFiles:\t{0}", System.Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFiles));
                        // クッキー用のディレクトリ
                        Console.WriteLine("Cookies:\t{0}", System.Environment.GetFolderPath(Environment.SpecialFolder.Cookies));
                        // デスクトップのディレクトリ
                        Console.WriteLine("DesktopDirectory:\t{0}", System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory));
                        // インターネットのお気に入りのディレクトリ
                        Console.WriteLine("Favorites:\t{0}", System.Environment.GetFolderPath(Environment.SpecialFolder.Favorites));
                        // インターネットの履歴項目のディレクトリ
                        Console.WriteLine("History:\t{0}", System.Environment.GetFolderPath(Environment.SpecialFolder.History));
                        // 一時インターネット ファイルのディレクトリ
                        Console.WriteLine("InternetCache:\t{0}", System.Environment.GetFolderPath(Environment.SpecialFolder.InternetCache));
                        // 非ローミングユーザーが使用するアプリケーション固有のディレクトリ
                        Console.WriteLine("LocalApplicationData:\t{0}", System.Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData));
                        // ドキュメントの共通リポジトリのディレクトリ
                        Console.WriteLine("Personal:\t{0}", System.Environment.GetFolderPath(Environment.SpecialFolder.Personal));
                        // プログラムファイルのディレクトリ
                        Console.WriteLine("ProgramFiles:\t{0}", System.Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles));
                        // 最近使用したドキュメントを格納するディレクトリ
                        Console.WriteLine("Recent:\t{0}", System.Environment.GetFolderPath(Environment.SpecialFolder.Recent));
                        // "送る"メニューのディレクトリ
                        Console.WriteLine("SendTo:\t{0}", System.Environment.GetFolderPath(Environment.SpecialFolder.SendTo));
                        // "スタート"メニューのディレクトリ
                        Console.WriteLine("StartMenu:\t{0}", System.Environment.GetFolderPath(Environment.SpecialFolder.StartMenu));
                        // スタートアップのディレクトリ
                        Console.WriteLine("Startup:\t{0}", System.Environment.GetFolderPath(Environment.SpecialFolder.Startup));
                        // システムディレクトリ
                        Console.WriteLine("System:\t{0}", System.Environment.GetFolderPath(Environment.SpecialFolder.System));
                        // ドキュメントテンプレートのディレクトリ
                        Console.WriteLine("Templates:\t{0}", System.Environment.GetFolderPath(Environment.SpecialFolder.Templates));
                }

                private static void TestDirectoryInfo()
                {
                        //
                        // ---------------- DirectoryInfo -------------
                        //
                        DirectoryInfo dirInfo = new DirectoryInfo(@"..\..");
                        // 作成日時の取得
                        Console.WriteLine("CreationTime:\t{0}", dirInfo.CreationTime);
                        // 存在するかどうか ( bool ) の取得
                        Console.WriteLine("Exists:\t{0}", dirInfo.Exists);
                        // ファイルエクステンションの取得
                        Console.WriteLine("Extension:\t{0}", dirInfo.Extension);
                        // フルパス名の取得
                        Console.WriteLine("FullName:\t{0}", dirInfo.FullName);
                        // アクセス日時の取得
                        Console.WriteLine("LastAccessTime:\t{0}", dirInfo.LastAccessTime);
                        // 更新日時の取得
                        Console.WriteLine("LastWriteTime:\t{0}", dirInfo.LastWriteTime);
                        // 名前の取得
                        Console.WriteLine("Name:\t{0}", dirInfo.Name);
                        // 親ディレクトリの取得
                        Console.WriteLine("Parent:\t{0}", dirInfo.Parent);
                        // ルートディレクトリの取得
                        Console.WriteLine("Root:\t{0}", dirInfo.Root);
                        // 指定ファイルのアトリビュートの取得
                        Console.WriteLine("Attributes:\t{0}", dirInfo.Attributes);

                        // 指定ディレクトリに存在するディレクトリ情報の取得
                        Console.WriteLine("\n指定ディレクトリに存在するディレクトリ情報の取得");

                        DirectoryInfo [] dirInfos = dirInfo.GetDirectories();
                        foreach (DirectoryInfo dInfo in dirInfos)
                        {
                                Console.WriteLine("Directories:\t{0}", dInfo.Name);
                        }
        
                        // 指定ディレクトリのファイル情報の取得
                        Console.WriteLine("\n指定ディレクトリのファイル情報の取得");

                        FileInfo [] fileInfos = dirInfo.GetFiles();
                        foreach (FileInfo fInfo in fileInfos)
                        {
                                Console.WriteLine("Files:\t{0}", fInfo);
                        }

                        // ディレクトリの作成
                        dirInfo = new DirectoryInfo(@".\test");
                        Console.WriteLine("{0}を作成します。", dirInfo.Name);
                        if ( dirInfo.Exists == false ) 
                        {
                                dirInfo.Create();
                                Console.WriteLine("Exists:\t{0}", dirInfo.Exists);
                        }

                        // ディレクトリの移動
                        // 移動する前に、ディレクトリが存在すれば削除します。
                        DirectoryInfo dirInfo2 = new DirectoryInfo(@".\test2");
                        if ( dirInfo2.Exists == true ) 
                        {
                                dirInfo2.Delete( false );
                        }
                        dirInfo = new DirectoryInfo(@".\test");
                        Console.WriteLine("{0}をMoveTo( ファイル名 )で移動します。", dirInfo.Name);
                        dirInfo.MoveTo(@".\test2");

                        // ディレクトリの作成
                        dirInfo = new DirectoryInfo(@".\test");
                        Console.WriteLine("{0}を作成します。", dirInfo.Name);
                        if ( dirInfo.Exists == false ) 
                        {
                                dirInfo.Create();
                                Console.WriteLine("Exists:\t{0}", dirInfo.Exists);
                        }

                        // ディレクトリの削除
                        try 
                        {
                                // サブディレクトリを作成する。
                                Console.WriteLine("サブディレクトリを作成します。");
                                dirInfo.CreateSubdirectory("SubDir");

                                // ディレクトリが空ではないのに、Delete( false ) により削除しようとすると
                                // System.IO.IOException例外が発生する。
                                Console.WriteLine("{0}をDelete( false )で削除します。", dirInfo.Name);
                                dirInfo.Delete( false );
                        }
                        catch (System.IO.IOException e)
                        {
                                Console.WriteLine("{0}, {1}", e.ToString(), e.Message);
                        }

                        dirInfo = new DirectoryInfo(@".\test");
                        // Delete ( true ) により、そのサブディレクトリ、およびすべてのファイルを削除する。
                        // 慎重な取り扱いが必要
                        Console.WriteLine("{0}をDelete( true )で削除します。", dirInfo.Name);
                        dirInfo.Delete( true );

                }

                private static void TestFileInfo()
                {
                        //
                        // ----------------- FileInfo -----------------------------------
                        //
                        FileInfo fileInfo = new FileInfo(@"..\..\Class1.cs");
                        // 作成日時の取得
                        Console.WriteLine("\nCreationTime:\t{0}", fileInfo.CreationTime);
                        // 存在するかどうか ( bool ) の取得
                        Console.WriteLine("Exists:\t{0}", fileInfo.Exists);
                        // ファイルエクステンションの取得
                        Console.WriteLine("Extension:\t{0}", fileInfo.Extension);
                        // フルパス名の取得
                        Console.WriteLine("FullName:\t{0}", fileInfo.FullName);
                        // アクセス日時の取得
                        Console.WriteLine("LastAccessTime:\t{0}", fileInfo.LastAccessTime);
                        // 更新日時の取得
                        Console.WriteLine("LastWriteTime:\t{0}", fileInfo.LastWriteTime);
                        // 名前の取得
                        Console.WriteLine("Name:\t{0}", fileInfo.Name);
                        // 指定ファイルのアトリビュートの取得
                        Console.WriteLine("Attributes:\t{0}", fileInfo.Attributes);
                        // ディレクトリの取得
                        Console.WriteLine("Directory:\t{0}", fileInfo.Directory);
                        // ディレクトリ名の取得
                        Console.WriteLine("DirectoryName:\t{0}", fileInfo.DirectoryName);
                        // ファイルサイズの取得
                        Console.WriteLine("Length:\t{0}", fileInfo.Length);

                        // Binary Open
                        FileInfo fileInfo2 = new FileInfo(@"test.dat");
                        FileStream fs = fileInfo2.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
                        byte []data = {0x41,0x42,0x43,0x44,0x45,0x46};
                        fs.Write(data, 0, data.Length);
                        fs.Close();

                        // Text Open
                        FileInfo fileInfo3 = new FileInfo(@"..\..\Class1.cs");
                        StreamReader sr = fileInfo3.OpenText();
                        StreamReader srSJIS = new StreamReader(sr.BaseStream, System.Text.Encoding.GetEncoding("sjis"));
                        string str = "";
                        while ( str != null )
                        {
                                str = srSJIS.ReadLine();
                                Console.WriteLine( str );
                        }
                        srSJIS.Close();
                        sr.Close();

                }
        }
}