.NET TIPS

一時フォルダ(テンポラリ・フォルダ)を取得するには?

デジタルアドバンテージ
2004/11/12

 アプリケーションが一時ファイル(テンポラリ・ファイル)を作成する場合、アプリケーションが異常終了しても不要なファイルが残らないように(不要なファイルとして後で削除できるように)、システムで定められている一時フォルダ(テンポラリ・フォルダ)に作成するのが一般的である。

 そのような一時フォルダは、Pathクラス(System.IO名前空間)の静的メソッドであるGetTempPathメソッドにより取得することができる。次のサンプル・プログラムは、一時ディレクトリを取得し、そのパス名を表示する。

// tempdir.cs

using System;
using System.IO;

public class TempDir {
  static void Main() {
    string name = Path.GetTempPath();
    Console.WriteLine(name);
    // 出力例:
    // C:\DOCUME~1\taka-e\LOCALS~1\Temp\
  }
}

// コンパイル方法:csc tempdir.cs
一時フォルダを取得し表示するC#のサンプル・プログラム(tempdir.cs)
 
' tempdir.vb

Imports System
Imports System.IO

Public Class TempDir
  Shared Sub Main()
    Dim name As String = Path.GetTempPath()
    Console.WriteLine(name)
    ' 出力例:
    ' C:\DOCUME~1\taka-e\LOCALS~1\Temp\
  End Sub
End Class

' コンパイル方法:vbc tempdir.vb
一時フォルダを取得し表示するVB.NETのサンプル・プログラム(tempdir.vb)

 プログラム中の出力例にあるディレクトリは8.3形式で短縮表示されているが、これは実際には、「C:\Documents and Settings\taka-e\Local Settings\Temp」を示している(「taka-e」は筆者のユーザー名)。そしてこの値は、実はTMP環境変数で設定されている値である。

 GetTempPathメソッドは、次の表の環境変数の存在を順に調べ、最初に見つかった環境変数に設定されている値を一時フォルダとして返す。

検索順序 環境変数名 デフォルトの設定値(Windows 2000以降の場合)
1
TMP C:\Documents and Settings\<ユーザー名>\Local Settings\Temp
2
TEMP C:\Documents and Settings\<ユーザー名>\Local Settings\Temp
3
USERPROFILE C:\Documents and Settings\<ユーザー名>

 これらの環境変数は、通常Windowsのインストール時に自動的にセットアップされる。もし、これら3つの環境変数がどれも設定されていなければ、一時フォルダはWindowsディレクトリ(通常は「C:\Windows」)となる。

 このような挙動は、GetTempPathメソッドが内部的に呼び出しているWin32 APIのGetTempPath関数の仕様からくるものである。よって、詳細についてはMSDNのSDK DocumentにあるGetTempPathの項目を参照していただきたい。

 1つ注意しなければならないのは、GetTempPathメソッドは、環境変数から得られた一時フォルダが実際に存在するかどうかをチェックしないという点である。例えば、TMP環境変数に「C:\TMP」という値が設定されている場合、CドライブのルートにTMPフォルダが存在してもしなくても、GetTempPathメソッドは「C:\TMP」という文字列を返す。

 「TIPS:一時ファイル(テンポラリ・ファイル)を作成するには?」では、PathクラスのGetTempFileNameメソッドについて解説しているが、GetTempFileNameメソッドは内部でGetTempPathメソッドを呼び出しており、それにより得られた一時フォルダ配下に一時ファイルを作成する。このためTMP環境変数などに存在しないディレクトリが設定されていると一時ファイルの作成は失敗し、GetTempFileNameメソッドは例外を発生する。End of Article

カテゴリ:クラス・ライブラリ 処理対象:ディレクトリ&ファイル
使用ライブラリ:Pathクラス(System.IO名前空間)
関連TIPS:一時ファイル(テンポラリ・ファイル)を作成するには?
 
この記事と関連性の高い別の.NET TIPS
Windowsフォルダのパスやドライブ名を取得するには?
Visual Studio 2005の一時プロジェクトが作成されるフォルダは?
一時ファイル用のランダムなファイル名を生成するには?
一時ファイル(テンポラリ・ファイル)を作成するには?
[フォルダの参照]ダイアログを使用するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事
  • Kinectが切り開く“夢の近未来” (2012/2/2)
     日本を含めた世界中でKinect for Windowsセンサー商用版とSDK正式版がリリース。未来のコンピューティングはどう変化するのか?
  • 3つの視点でネイティブと.NETの適材適所を考察 (2012/1/31)
     アプリ開発は「ネイティブ」と「.NET」、どちらが最良? その問いには「適材適所」と答えるしかない。では、“適所”は一体どこかを考察する
  • SQL Azure Data Sync入門 (2012/1/30)
     SQL Azure/SQL Serverデータベース間のデータ同期を簡単に実現するサービスとは? その仕組みや使用手順を解説
  • Windows Phoneアプリ市場の現状を分析する (2012/1/27)
     Windows Phone のアプリ・ストアに日々登録されている多種多様なアプリ。カテゴリ別のアプリ数は? 市場の現状を明らかにする

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH