JCL_file_UserTemporaryFilePath

ユーザのドキュメントフォルダに一時ファイルを置くためのフォルダとファイルのパスを返す。Webエリアにコンテンツを表示するときなどに便利。

使い方
$tempPath:=JCL_file_UserTemporaryFilePath(vTY08_txtFileName; “JIRO_TMP”)

引数
$1: ファイル名
$2: フォルダー名
$0: ファイルパス

//JCL_file_UserTemporaryFilePath
//20170301 wat
// ユーザのドキュメントフォルダに置くフォルダとファイルのパスを作る
//一時ファイルを保存するパスを返す
// 20160907 wat 重複を避けるためデイトマークを入れる
// 20170301 wat commented フォルダ名は外からもらう

C_TEXT($1; $fileName)
$fileName:=$1
C_TEXT($2; $folderName)  // 20170301
$folderName:=$2
C_TEXT($0; $outFilePath)
C_TEXT($ext)
C_TEXT($documentsFolder)
C_TEXT($tempPath)
C_LONGINT($no)
C_TEXT($datemark)
$datemark:=JCL_str_Datemark(Current date; Current time)

//ファイル名から拡張子を取得
$ext:="."+JCL_file_Extension($fileName)

// ユーザのドキュメントフォルダに
$documentsFolder:=System folder(Documents folder)
$tempPath:=JCL_file_MakeFilePath($documentsFolder; $folderName)

// フォルダがなければ作る
If (Test path name($tempPath)#Is a folder)
	CREATE FOLDER($tempPath)
	
End if 

//20160926 yabe ファイル名の重複を避けてパスを取得
$no:=0
$outFilePath:=JCL_file_MakeFilePath($tempPath; $datemark+$ext)
While (Test path name($outFilePath)=Is a document)
	
	// 同じファイル名がすでに合ったら(1)のように数字を補填する
	$no:=$no+1
	$outFilePath:=JCL_file_MakeFilePath($tempPath; $datemark+"("+String($no)+")"+$ext)
	
End while 

$0:=$outFilePath

一時ファイルなので元のファイル名に意味はない、という設計。重複しにくいデイトマークに置き換えて、それでも重複の可能性があるため(1)をつけている。OS上で開くときに便利なように拡張子は元のファイル名から取得してつけている。