Top > OOoBasic > Generic > TemporaryFiles

一時ファイル Edit

一時ファイルを利用したいときには OpenOffice.org API が提供してくれます。

ファイル Edit

com.sun.star.io.TempFile サービスをインスタンス化するだけで一時ファイルを利用可能になります。

このサービスを利用すると OOo API がツール - オプション - OpenOffice.org - パスで設定した一時ファイルディレクトリに自動的に一時ファイルを作成します。

Sub temporaryfile_1
  oTempFile = CreateUnoService("com.sun.star.io.TempFile")
  msgbox oTempFile.Uri
  msgbox oTempFile.ResourceName
End Sub

Uri プロパティが作成された一時ファイルの url 形式でのパスを、ResourceName プロパティがシステム形式でのパスを保持しています。

そのほか、一時ファイルの読み書きには TempFile サービスの次のインターフェースが利用できます。

  • com.sun.star.io.XInputStream
  • com.sun.star.io.XOutputStream
  • com.sun.star.io.XSeekable
  • com.sun.star.io.XStream
  • com.sun.star.io.XTruncate

この一時ファイルは RemoveFile プロパティがデフォルトで True に設定されているため、利用しない時間経過または OOo 終了時に削除されます。False に変更すると自動的に削除されなくなります。

ディレクトリ Edit

OOo が動作しているときにはいつもテンポラリディレクトリが作成されています。このディレクトリはコンフィグレーションに記載があり、実行ごとに変化します。

/org.openoffice.Office.Common/Internal/CurrentTempURL に URL 形式で記述されます。

複数の一時ファイルを利用するときには一時ディレクトリがほしくなります。 直接 OOo API から一時ディレクトリは提供されていませんが、上記 com.sun.star.io.TempFile サービスを利用して一時ディレクトリを利用できます。

TempFile サービスで作成される一時ファイルは一時的なディレクトリに含めた形で提供されます。このディレクトリは一時ファイルと同じときにまとめて削除されます。一時ファイル以外のファイルが存在してもまとめて削除してくれます。

たとえば、パス名は以下のようになっています。

   uri paty:  file:///C:/Users/user/AppData/Local/Temp/svihk.tmp/svihl.tmp
system path:  C:\Users\user\AppData\Local\Temp\svihk.tmp\svihl.tmp

これらのパスからディレクトリ名の部分を取得して一時ディレクトリのパスとして利用します。

文字列処理やパス処理を行いディレクトリ名を取得します。環境に依存しないように URL からディレクトリパスを取得、システムパスに変換します。

ここでは OOo API を利用してディレクトリパスを取得してみます。

Sub tempdirectory_2
  oTempFile = CreateUnoService("com.sun.star.io.TempFile")
  sURI = oTempFile.Uri
  
  oTransFormer = CreateUnoService("com.sun.star.util.URLTransformer")
  Dim aURL As New com.sun.star.util.URL
  aURL.Complete = sURI
  oTransFormer.parseStrict(aURL)
  sDirURL = aURL.Protocol & aURL.Path
  msgbox sDirURL & chr(10) & ConvertFromURL(sDirURL)
End Sub

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes