Visual Basic 初級講座 |
Visual Basic 中学校 > 初級講座 >
第31回 ファイルシステム
今回はファイルやフォルダのコピー・削除をはじめ、フォルダの中のファイルの一覧の取得や、ファイルの日時の取得・設定などファイルシステムに関することがらを説明します。
この回の要約 ・ファイルを操作するにはFileクラス、またはFileInfoクラスを使う。 ・フォルダを操作するにはDirectoryクラス、まはたDirectoryInfoクラスを使う。 ・ファイルをコピーするには IO.File.Copy("C:\From.txt", "C:\To.txt") ・フォルダの中のファイルの一覧を取得するにはDirectoryInfoクラスのGetFilesメソッドを使う。 ・ファイルの日時や属性を設定・取得する方法。 |
アプリケーションでは様々なシーンでファイルシステムへのアクセスが必要になります。たとえば、外部のファイルを読み込もうとしたときにそのファイルが存在するか確認しなければなりません。メモ帳の[ファイル]メニューで[開く]を選択して、存在しないファイル名を指定するとメモ帳はちゃんとファイルが存在しないという警告のメッセージを表示します。
他にもファイルのコピーや削除、名前変更、更新日や作成日の取得などいろいろな場面でファイルシステムが必要となります。また、ファイルだけでなくフォルダの扱いも重要です。
VBを使うとこういったファイルシステムに対する要求が驚くほど簡単に実現できます。
VBではこれらファイルシステムを扱う際に主に次のクラスを使います。
クラス | 読み方 | 主な機能 |
File | ファイル | ファイルの操作 |
FileInfo | ファイルインフォ | 個々のファイルの操作 |
Directory | ディレクトリ | フォルダの操作 |
DirectoryInfo | ディレクトリインフォ | 個々のフォルダの操作 |
DriveInfo | ドライブインフォ | VB2005以降。ドライブ情報の取得 |
■表1:ファイル・フォルダ操作関連の主なクラス
ファイルの操作にはFileクラスまたはFileInfoクラスを使います。フォルダの操作にはDirectoryクラスまたはDirectoryInfoクラスを使います。それぞれ名前に...Infoとついている方のクラスは「個々の」ファイルやフォルダを操作するのに適したクラスです。とくに必要がなければ名前に...Infoとついていない方のクラスを使います。
ドライブに関してはDriveInfoクラスしかありません。また、このクラスはVB2005以上でないと使用できません。
これらのクラスはすべてIO名前空間(読み方:IO = アイオー)に属していますので、今回紹介する例ではクラスの先頭に IO. とついています。プログラムの先頭で Imports System.IO と書けばこの IO. という記述はすべて省略することができます。
ファイルに関するコピー・削除などの操作はどれもとても簡単にできます。ここではいくつか例を挙げますが説明の必要はほとんどないでしょう。
まずはファイルをコピーする例です。この例ではC:\Test1.txtをC:\Test2.txtにコピーします。C:\Test1.txtが存在しなかったり、C:\Test2.txtが既に存在する場合にはエラーになります。
IO.File.Copy("C:\Test1.txt", "C:\Test2.txt") |
■リスト1:ファイルのコピー
コピー先ファイルが存在しても構わず上書きしてしまいたいのであれば第3引数にTrueを指定します。この場合、コピー先に既にファイルが存在してもそのファイルを上書きしてコピーしてしまいます。
IO.File.Copy("C:\Test1.txt", "C:\Test2.txt", True) |
■リスト2:ファイルの上書きコピー
削除や移動などファイルに関する基本的な操作はこのFileクラス(読み方:File = ファイル)を通して行うことができます。どれも非常に簡単に使えるようになっているので一々例を挙げないでFileクラスのファイル操作に関する主なメンバを確認するにとどめます。
メソッド | 読み方 | 機能 |
Move | ムーブ | ファイルを移動します。 |
Copy | コピー | ファイルをコピーします。 |
Delete | デリート | ファイルを削除します。 |
Exists | イグジスツ | ファイルが存在するか確認します。 |
Create | クリエイト | ファイルを作成します。 |
Replace | リプレイス | VB2005以降。バックアップを作成しながらファイルをコピーします。 |
■表2:ファイル操作に関するFileクラスの主なメソッド
ファイルを操作するだけでなくファイルの情報を取得することもできます。
たとえばファイルのサイズを取得するには次のようにします。
Dim
oFile As New
IO.FileInfo("C:\Test.txt") Dim FileSize As Long FileSize = oFile.Length MsgBox(FileSize) |
■リスト3:ファイルのサイズの取得
この場合はFileクラスではなくFileInfoクラスを使います。FileInfoクラスはNewを使ってインスタンスを作成する必要がある点に注意してください。
このほかにもFileInfoクラスを使っていろいろな情報を取得することができます。ここでは代表的な情報の取得方法だけまとめて紹介します。
Dim
oFile As New
IO.FileInfo("C:\Test\Test.mpg") Dim FileName As String Dim FullPath As String Dim FileExt As String Dim FolderName As String Dim ParentFolder As IO.DirectoryInfo
FileName = oFile.Name
'Test.mpg ParentFolder = oFile.Directory |
■リスト4:ファイルの基本情報の取得
どれもFileInfoクラスのプロパティを使うだけなのでプログラムはいたって単純です。具体的にどのような情報が取得できるかはコメントとして書いておきましたので参考にしてください。最後のDirectoryプロパティ(読み方:Directory = ディレクトリ)はこのファイルが属するフォルダを表すDirectoryInfoクラスのインスタンスを取得します。
Fileクラスを使ってファイルの日付や属性を取得・設定することもできます。たとえばファイルの作成日を取得するにはGetCreationTimeメソッド(読み方:GetCreationTime = ゲットクリエイションタイム)を使用します。
Dim
CreationTime As Date CreationTime = IO.File.GetCreationTime("C:\boot.ini") MsgBox(CreationTime) |
■リスト5:ファイルの作成日時の取得
プログラムを使って作成日を再設定してしまうこともできます。ただし、ファイルの作成日を再設定することはファイルを整理するときに混乱を招きますので通常は行わないように注意してください。
'C:\Test1.txtの作成日を2025年月日にする。 IO.File.SetCreationTime("C:\Test1.txt", #12/1/2025#) |
■リスト6:ファイルの作成日時のセット
同様の手法で更新日やアクセス日を設定・取得することも可能です。ファイルの日付に関するFileクラスのメンバの一覧を掲載しますので参考にしてください。
メソッド | 読み方 | 機能 |
GetCreationTime | ゲットクリエイションタイム | 作成日時を取得します。 |
GetLastAccessTime | ゲットラストアクセスタイム | アクセス日時を取得します。 |
GetLastWriteTime | ゲットラストライトタイム | 更新日時を取得します。 |
SetCreationTime | セットクリエイションタイム | 作成日時をセットします。 |
SetLastAccessTime | セットラストアクセスタイム | アクセス日時をセットします。 |
SetLastWriteTime | セットラストライトタイム | 更新日時をセットします。 |
■表3:ファイル日時に関するFileクラスの主なメソッド
属性の設定・取得はこれよりも少し大変です。ここでいう属性とは「読み取り専用」とか「隠しファイル」などを指しています。属性の設定・取得がわかりにくい理由は複数を一括して管理しているからです。また、ファイルの属性にはどのようなものがあって、それにはどのような効果があるのかということをしっかりと理解していない場合が多いことも挙げられます。私もよく理解していないのですが属性の数は少なくとも14個はあるようですし、Windows Vistaや新しいWindowsのファイルシステムが普及すればさらに増えるでしょう。
ともあれ、まずはファイルが読み取り専用かどうか調べるプログラムを書いて見ましょう。次の例ではC:\Test1.txtが読み取り専用かどうか判断することができます。
If
IO.File.GetAttributes("C:\Test1.txt")
And IO.FileAttributes.ReadOnly
Then MsgBox("読み取り専用です。") Else MsgBox("読み取り専用ではありません。") End If |
■リスト7:読み取り専用属性の判定
ここでIf文の中で = ではなく And が使われていることに注意してください。ほとんどの場合 = ではうまく判定できません。このことをテストするためにC:\Test1.txtの読み取り専用属性をはずしたりつけたりしてプログラムを何度か実行してみると良いでしょう。ご存知とは思いますが、ファイルの属性を変更するにはファイルを右クリックしてプロパティを選択し、プロパティ画面の中のチェックをはずしたりつけたりします。
= ではなく And を使用する理由はすべての属性を1つのプロパティで取得するからです。 = を使った場合は、「読み取り専用属性のみ」という意味になります。つまり、読み取り専用の隠しファイルの場合は = では判定できなくなります。一方 And を使った場合は「読み取り専用属性」が含まれているかという判断となり、他の属性がついていようがついていまいが読み取り専用属性だけについて判断することができます。このようなAndの用法は今回のテーマからはずれるために深く説明しません。おそらく初めて見た方にはこの短い説明では到底理解できないと思いますが、「属性を判断するにはAndを使う」くらいに暗記して置いてください。どうしてもこの部分の動作が知りたい場合は「ビット演算」をキーワードに調べてみてください。
GetAttributesメソッド(読み方:GetAttributes = ゲットアトリビュートス)の値はFileAttributes列挙体(読み方:FileAttributes = ファイルアトリビュートス)から指定するだけです。代表的なFileAttributes列挙体の値を表にまとめておきます。
メンバ | 読み方 | 意味 |
Archive | アーカイブ | アーカイブ属性。この属性には特に効果はなく単なる目印として使用されます。 |
Compressed | コンプレスド | 圧縮属性。ここでいう「圧縮」とはzipやlzhのことではなく、OSの機能としての圧縮です。 |
Encrypted | エンクライプテッド | 暗号化属性。 |
Hidden | ヒドゥン | 隠しファイル属性。 |
ReadOnly | リードオンリー | 読み取り専用属性。 |
System | システム | システム属性。 |
■表4:主な属性。FileAttributes列挙体のメンバ。
属性を判断するだけでなく、属性を設定することもできます。たとえばあるファイルを読み取り専用にしたり、逆に読み取り専用のファイルから読み取り専用属性を解除したりできます。これにはSetAttributesメソッド(読み方:SetAttributes = セットアトリビュートス)を使うのですが、注意すべきは関係のない属性をいじらないということです。
たとえば、隠しファイル属性がついたファイルがあったとして、このファイルに「読み取り専用属性をセットしろ」と単純に命令すると、隠しファイル属性が消えてしまうのです。この場合は、このファイルに「隠しファイル属性と読み取り専用属性をセットしろ」と命令する必要があります。
そこで属性をセットする前に現在どのような属性がついているのかGetAttributesメソッドを使って調べる必要があります。
以下のコードはC:\Test1.txtに読み取り専用属性を追加します。もちろん他の属性が変更されることはありません。
Dim
OldAttributes As
FileAttribute '現在の属性 Dim NewAttributes As FileAttribute '新しい属性
OldAttributes = IO.File.GetAttributes("C:\Test1.txt")
'現在の属性を取得 IO.File.SetAttributes("C:\Test1.txt", NewAttributes) '新しい属性をセット |
■リスト8:読み取り専用属性を追加する
さらに、次のコードではC:\Test1.txtから読み取り専用属性をはずします。こちらも他の属性が変更されることはありません。
Dim
OldAttributes As
FileAttribute '現在の属性 Dim NewAttributes As FileAttribute '新しい属性
OldAttributes = IO.File.GetAttributes("C:\Test1.txt")
'現在の属性を取得 IO.File.SetAttributes("C:\Test1.txt", NewAttributes) '新しい属性をセット |
■リスト9:読み取り専用属性を解除する
ここでも Or や And, Notといった演算子の動作を不思議に思う方がいらっしゃると思いますが、これらについても暗記するのが良いと思います。詳しく理解したい方はやはり「ビット演算」をキーワードに検索してみてください。
フォルダの操作もファイルの操作と同じように行うことができますが、Fileクラスではなく、Directoryクラス(読み方:Directory = ディレクトリ)を使用します。以下の表はDirectoryクラスのフォルダ操作関係の主なメソッドですがFileクラスのメソッドとほとんど同じということがすぐにわかると思います。
メソッド | 読み方 | 機能 |
Move | ムーブ | フォルダを移動します。 |
Delete | デリート | 空のフォルダを削除します。 |
Exists | イグジスツ | フォルダが存在するか確認します。 |
CreateDirectory | クリエイトディレクトリ | フォルダを作成します。 |
■表5:フォルダ操作に関するDirectoryクラスの主なメソッド
注意したいのはフォルダをコピーするメソッドがないことです。またフォルダを削除するDeleteメソッドはフォルダの中にファイルやフォルダが存在すると例外IOException(読み方:IOException = アイオーエクセプション)が発生して削除に失敗します。
具体例を挙げて説明します。以下の例はフォルダC:\TestFolderを削除します。
IO.Directory.Delete("C:\TestFolder") |
■リスト10:空フォルダの削除
このコードはC:\TestFolderが空の場合は成功しますが、中に何か入っている場合にはIOExceptionが発生して削除に失敗します。
つまり、Directoryクラスはあくまで1つのフォルダを操作するのであって、その中にあるファイルやフォルダまでは面倒を見てくれないということです。フォルダを移動するMoveメソッドは中身も一緒に移動してくれますがこれはWindowsのフォルダの管理方法によるおまけみたいな機能のようです。Windowsにとっては「フォルダの移動」という行為は単にフォルダの名前が変わるのと同じようなもののようです。
そこで、フォルダを中身ごとコピー・削除したい場合は他の方法を探すことになります。方法の1つは自分でプログラムを書いてファイルを1つずつコピー・削除する方法です。現にそういう方法を採っているプログラマの方々もいらっしゃると思います。
他の方法では.NET Frameworkの機能ではなくWindows APIの機能を使うということも考えられます。Windows APIについては中級講座で取り上げる予定ですがWindows自体に用意されている機能をVBから呼び出す手法を指しています。この方法でフォルダの中のファイルを丸ごとコピー・削除する例がサンプルに掲載してありますので必要ならば参照してください。
VB2005以上を使っている場合にはMyクラス(読み方:My = マイ)を使用すると驚くほど簡単にこの問題を解決できます。
VB2005でフォルダを中身も一緒にまるごとコピーするには次のようにたった1行書けばよいだけです。
この例では、C:\TestFolderをまるごとコピーしてC:\TestFolder2というフォルダを作ります。
My.Computer.FileSystem.CopyDirectory("C:\TestFolder", "C:\TestFolder2") |
■リスト11:中身ごとフォルダをコピーする
削除の例も同様に簡単で次のようになります。
My.Computer.FileSystem.DeleteDirectory("C:\TestFolder3", FileIO.DeleteDirectoryOption.DeleteAllContents) |
■リスト12:中身ごとフォルダを削除する
マイクロソフト社はVBについてはプログラマが入力しなければならないコードの量を大幅に減少させることを目標にしているとのことですが、この部分に関してはまさにこの方向性が効を奏した形になっています。VBは人類を幸せにします。
フォルダにはファイル以上にいろいろな情報があります。ファイルの細かい情報を取得するときにFileInfoクラスを使った様にフォルダの細かい情報を取得するにはDirectoryInfoクラスを使用します。
ここでは特にフォルダ内にあるファイルやフォルダの一覧を取得する方法を説明します。
一覧の取得自体はとても簡単です。DirectoryInfoクラスのGetFilesメソッド(読み方:GetFiles = ゲットファイルズ)を使用するだけです。このメソッドはフォルダに属するそれぞれのファイルについてのFileInfoクラスの配列を返します。DirectoryクラスのGetFilesメソッドでも戻り値がファイル名を表す文字列型の配列であるという点を除けば同じことができますが、ここでは私の好みにしたがってDirectoryInfoクラスを例に説明します。
たとえば、次のコードはC:\Windowsフォルダにあるファイル名の一覧をリストボックスに表示します。
Dim
oFolder As New
IO.DirectoryInfo("C:\Windows") ListBox1.Items.AddRange(oFolder.GetFiles) |
■リスト13:ファイルの一覧を表示する
GetFilesメソッドの通常の使用方法ではフォルダの直下にあるファイルだけが対象になります。サブフォルダの中のファイルは対象となりません。
サブフォルダも含めてそのフォルダ以下にあるすべてのファイルを取得するにはGetFilesの3番目のオーバーロードを使って次のように書きます。ただし残念ながらこの使用方法はVB2005以降でのみ可能です。
Dim
oFolder As New
IO.DirectoryInfo("C:\Windows") ListBox1.Items.AddRange(oFolder.GetFiles("*", IO.SearchOption.AllDirectories)) |
■リスト14:サブフォルダも含んでファイルの一覧を表示する
この使用方法で第2引数が「すべてのフォルダ」という意味を表しています。第1引数は取得するファイルに対するちょっとした条件を「ワイルドカード」という形式を使って指定します。ワイルドカードにおいて「*」は「すべて」という意味になります。
ワイルドカードを使ったファイルの抽出機能はVB.NET2002, VB.NET2003でも使用可能です。次のように書くと拡張子がbmpのファイルをC:\Windowsフォルダから配列で取得できます。
Dim
oFolder As New
IO.DirectoryInfo("C:\Windows") ListBox1.Items.AddRange(oFolder.GetFiles("*.bmp")) |
■リスト15:bmpファイルの一覧を表示する
ところでファイルを処理するときには名前だけわかれば良いわけではありません。ここでは1つ1つのファイルに対して何らかの処理を実行する場合を考えて、ファイルのサイズを取得する例を掲載しておきます。
1つ1つのファイルに対して処理を行う場合はGetFilesメソッドで取得できるFileInfoクラスの配列に対してループを行うことになります。
Dim
oFolder As New
IO.DirectoryInfo("C:\Windows") Dim oFile As IO.FileInfo Dim FileSize As String For Each oFile In oFolder.GetFiles FileSize = oFile.Length \ 1024 & " KB" ListBox1.Items.Add(oFile.Name & " - " & FileSize) Next |
■リスト16:ファイルを1つずつ処理する例
GetFilesクラスの戻り値はFileInfoクラスの配列ですので、前に説明したようにファイルサイズなどの情報の取得がプロパティを使って簡単にできるようになっています。
フォルダの中にあるフォルダの一覧を取得するにはGetDirectoriesメソッド(読み方:GetDirectories = ゲットディレクトリーズ)を使用します。このメソッドはGetFilesメソッドと使い方は同じで、戻り値はDirectoryInfoクラスの配列となります。
さらに、ファイルでもフォルダでも一緒くたに取得するGetFileSystemInfosメソッド(読み方:GetFileSystemInfos = ゲットファイルシステムインフォズ)もありますが、あまり便利ではありません。ファイルとフォルダ両方の一覧を取得したい場合はGetFilesメソッドとGetDirectoriesメソッドを1度ずつ呼び出すのが良いようです。
ここまでで登場した機能を使って簡単なファイル検索機能をもったプログラムを作ってみます。このプログラムでは対象のフォルダから、目的のファイルを表す先頭の数文字を入力するとたちまちその条件に合致するファイルの一覧が表示されるというものです。
■画像1:ファイル検索プログラム
VB2005では完全な機能が使用できますが、VB.NET2002およびVB.NET2003で作った場合はサブフォルダにあるファイルを検索する機能はありません。もし、VB.NET2002またはVB.NET2003を使用されている方でやる気にあふれている方はサブフォルダ検索機能のプログラムに挑戦してみるのも良いでしょう。
また、対象のフォルダはユーザーが自分で選択できるのが望ましいのですが、今回は説明の便宜のためにC:\Windows固定とします。もちろんプログラム中のこの指定の部分を変更すれば好きなフォルダを対象とすることができます。ユーザーが自分で対象フォルダを選択できるようにプログラムを改造してみるのも一興です。
さて、このソフトのプログラムはかなり単純です、まずテキストボックスとリストボックスを以下の表のように配置してください。名前のほかはAnchorプロパティを変更するだけでOKです。
コントロール | プロパティ | 値 |
txtFileName (テキストボックス) | Anchor | Top, Left, Right |
lstFileNames (リストボックス) | Anchor | Top, Bottom, Left, Right |
■表6
そして、テキストボックスのTextChangedイベントに条件に合致するファイルの一覧を表示するようにプログラムします。TextChangedイベントはテキストボックスの内容に変化があったときに発生します。同時に対象フォルダを表すDirectoryInfoクラスのインスタンス作成もこの部分に含めて載せておきます。
Dim
oFolder As New
IO.DirectoryInfo("C:\Windows")
'対象フォルダのインスタンス作成 Private Sub txtFileName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtFileName.TextChanged lstFileNames.Items.Clear() If
txtFileName.Text.Length = 0
Then Dim oFile As IO.FileInfo lstFileNames.BeginUpdate() For
Each oFile In
oFolder.GetFiles(txtFileName.Text & "*",
IO.SearchOption.AllDirectories) lstFileNames.EndUpdate() End Sub |
■リスト17:ファイル検索プログラム(VB2005)
VB.NET2002およびVB.NET2003の場合はこの部分をちょっとだけ変更する必要があります。次のようになります。VB.NET2002, VB.NET2003ではサブフォルダの検索機能がないのでこのような変更が必要となります。
Dim
oFolder As New
IO.DirectoryInfo("C:\Windows")
'対象フォルダのインスタンス作成
Private
Sub txtFileName_TextChanged(ByVal
sender As System.Object,
ByVal e As System.EventArgs)
Handles txtFileName.TextChanged
lstFileNames.Items.Clear() If
txtFileName.Text.Length = 0
Then Dim oFile As IO.FileInfo lstFileNames.BeginUpdate() For
Each oFile In
oFolder.GetFiles(txtFileName.Text & "*") lstFileNames.EndUpdate() End Sub |
■リスト18:ファイル検索プログラム
これだけでもうファイルの一覧を表示する機能は完成です。プログラムを実行させて何か文字を入力して試してみてください。実行速度の遅いパソコンで大量のファイルを検索する場合は少しいらいらするかもしれません。
これだけでは検索する意味があまりないのでファイル名をダブルクリックするとそのファイルが起動するようにしてみましょう。これには以前にも登場したProcessクラス(読み方:Process = プロセス)のStartメソッド(読み方:Start = スタート)を使うだけです。
Private
Sub lstFileNames_DoubleClick(ByVal
sender As Object,
ByVal e As
System.EventArgs) Handles
lstFileNames.DoubleClick
On
Error Resume
Next End Sub |
■リスト19:ダブルクリックしたファイルを起動する
たったこれだけで単純とはいえWindowsにもないようなファイル検索プログラムができるのですからたいしたものです。特にVB2005のサブフォルダ検索機能は大いに役に立っています。あとは対象フォルダの選択ができれば言うことないのですが…。
最後に存在するパスと存在しないパスについて説明します。
まず、パスが存在するか確認するには既に出てきたようにExistsメソッドを使用します。次の例はC:\Testという名前のファイルが存在するかを調べます。
MsgBox(IO.File.Exists("C:\Test")) |
■リスト20:ファイルが存在するか確認する
ところで、上記の例ですがC:\Testという「フォルダ」が存在する場合にはFalseを表示されます。FileクラスのExistsメソッドはあくまでも「ファイル」が存在するかを確認するメソッドなのです。
ファイルまたはフォルダが存在するか確認するにはFileクラスのExistsメソッドを呼び出した後でDirectoryクラスのExistsメソッドを使っても良いのですがVBのDir関数(読み方:Dir = ディル)を使うと一度に判断することができます。
If
Len(Dir("C:\Test",
FileAttribute.Directory)) > 0
Then MsgBox("ファイルまたはフォルダが存在します。") Else MsgBox("ファイルもフォルダも存在しません。") End If |
■リスト21:ファイルまたはフォルダが存在するか確認する
Dir関数にはいろいろな使い方があります。ここで紹介した使い方はほんの一例です。
さて、これから新しくファイルを作成しようとしている場合、当然そのファイルはまだ存在していないことになります。たとえば、C:\Test\NewFile.txtというファイルをプログラムで作成する場合のことを考えてみてください。この場合このパスは存在しないパスということになります。
パスが存在しないとどのような不都合があるかすぐにわかるでしょうか?実は存在しないファイルに対してはFileInfoクラスのインスタンスが作成できないのです。もちろんFileクラスを使った様々な操作もできません。
存在しないパスに対して拡張子を取得したり、親フォルダを取得したりするにはPathクラス(読み方:Path = パス)を使うと便利です。Pathクラスはパスが存在していようが存在していまいが平等に扱ってくれます。その代りにPathクラスができることはパス文字列の操作に限られます。Pathクラスには主に次のようなメソッドがあります。
メソッド | 読み方 | 機能 |
GetExtension | ゲットエクステンション | 拡張子を取得する。 |
GetDirectoryName | ゲットディレクトリネーム | フォルダ名を取得する。 |
GetFileName | ゲットファイルネーム | フォルダ名を含まないファイル名を取得する。 |
GetFileNameWithoutExtension | ゲットファイルネームウィザウトエクステンション | フォルダ名と拡張子を含まないファイル名を取得する。 |
HasExtension | ハズエクステンション | 拡張子が含まれているか調べる。 |
ChangeExtension | チェンジエクステンション | 拡張子を変更する。 |
■表7:Pathクラスの主なメソッド
使用例はまとめて掲載しておきます。
Dim
FileName As String
= "C:\Test\NewFile.txt" Dim Extension As String Dim FolderName As String Dim Name As String Dim BodyName As String Extension =
IO.Path.GetExtension(FileName)
'.txt If
IO.Path.HasExtension(FileName) Then
'(True) |
■リスト22:パスの基本操作
このPathクラスはファイルが存在にかかわらず動作してくれるので知っておくと何かと便利です。