3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(.Net)一時ファイル、フォルダの使用方法

■一時ファイルは.Netでは非常に簡単に作成できます。

最初は、System.Environment.GetFolderPath(Environment.SpecialFolder.値) で取れるのかと思いましたが、違ってました。

Dim tmpFile As String = System.IO.Path.GetTempFileName()

とするだけで、ユーザの一時フォルダに「tmp<16進文字列>.tmp」という空のファイルを作成してくれます。

GetTempFileName()の戻り値に作成された一時ファイル名が返されるので、あとは作成された一時ファイルを用いていろいろやってやればいいわけです。

ただし、削除処理はきちんとしてやらないといけませんが。(このメソッドで 65535個を超える数のファイルを作成した場合 IOException が発生するので削除は忘れずに。)

参考:

@IT 一時ファイル(テンポラリ・ファイル)を作成するには?

MSDN: Path.GetTempFileName メソッド

ちなみに、System.Environment.GetFolderPath(Environment.SpecialFolder.値) はマイドキュメントやデスクトップなど特殊フォルダのパスを取得するメソッドです。

詳しくは、MSDN Environment.GetFolderPath メソッドMSDN Environment.SpecialFolder 列挙体、使い方は@IT Windowsのシステム・フォルダのパスを取得するには?参照。

■一時フォルダは、、、

ユーザ毎の一時フォルダは下記のメソッドで取得できます。

Dim tmpDir As String = System.IO.Path.GetTempPath()

で、この一時フォルダ配下に、アプリケーションで使う一時フォルダを作りたいわけですが、その場合は開発者がいちいち一時フォルダを作成してやらなければなりません。どうせなら、GetTempFileName() のフォルダ版のように一時フォルダを勝手に作ってほしいところですが、そこまで気が利くメソッドはないようです。

作成するアプリケーションの一時フォルダと同じ名前のフォルダがすでに存在している場合の処理等も書かないといけませんね。