ファイルとフォルダの参照
SenseTalkは、ファイルやファイルシステムを操作するためのいくつかの方法を提供しています。ここで説明するコマンドと関数を使用して、ファイルやファイルシステムの情報にアクセスしたり、作業ディレクトリを決定したり変更したり、パスやディレクトリについての詳細を確認したりできます。また、ファイルサイズや割り当てられた権限など、個々のファイルのプロパティにもアクセスすることができます。
ファイルやファイルシステムオブジェクトを操作するためのSenseTalkのコマンドと関数は、テスト対象のシステム(SUT)ではなく、ローカルマシンで動作します。
以下の例では、SenseTalkを使用してファイルやファイルシステムの情報にどのようにアクセスするかを示しています。ファイルの作成や削除、ファイルへの書き込み、ファイルやファイルシステムオブジェクトの変更方法については、ファイルとフォルダの相互作用を参照してください。
ベストプラクティスとして、SenseTalkスクリプト内で参照されるすべてのファイルは、スイートウィンドウ内のリソースペインを通じてEggplant Functionalに追加するべきです。この方法は、指定されたスイートのスイートディレクトリ内のリソースディレクトリにファイルを保存します。SenseTalkはローカルファイルシステム上の他の場所に保存されたファイルにアクセスすることができますが、リソースディレクトリを使用すると追加の機能が提供されます。詳細については、リソースペインを参照してください。
スクリプト内でファイルを参照する
type code
スクリプト内でファイルを参照するには、単に file という単語に続けてファイルの名前となる式を使用します。 folder という単語を file の代わりに使用することて、同様にフォルダを参照することもできます。
構文:
specialFolderPath( folderName {, domainName} )
{the} specialFolderPath of folderName
{the} [temporary | temp | home | documents | desktop] folder
folderとdirectoryの単語はSenseTalkスクリプト内で交互に使用されます。スクリプト内でfolderの単語が使用されている場所で、代わりにdirectoryの単語を使用することができます。
_filePath_は、Mac/Linux形式またはWindows形式のパスのテキスト、またはパスの各コンポーネントが一つのアイテムであるリストとすることができます。
指定する名前は、ファイルまたはフォルダの完全な(絶対)パス名、または現在の作業フォルダに対する相対パスとすることができます( the folder グローバルプロパティを参照)。SenseTalkは、次のルールに従って、指定された名前に基づいてファイルの完全な"絶対"パス名を決定します:
- 名前がスラッシュ (/) で始まるか、パスリストの最初のアイテムが "/" であれば、それは既に絶対ファイル名です
- 名前がドライブレターとコロンに続くスラッシュ(例: "C:\")で始まるか、パスリストの最初のアイテムがドライブレターとコロンで、2番目のアイテムがスラッシュであれば、それは既に絶対ファイル名です
- 名前がチルダとスラッシュ (~/) で始まる場合、それはユーザーのホームフォルダに対する相対パスを表します
- 名前がチルダ (~) に続くユーザー名で始まる場合、それはその特定のユーザーのホームフォルダに対する相対パスを表します
- 名前がピリオドとスラッシュ (./) または二つのピリオドとスラッシュ (../) で始まる場合、それは現在の作業フォルダまたはその親フォルダからの相対パスを表します
- それ以外の場合、それは現在の作業フォルダ内のファイルまたはパスを表します
Behavior: filePath 関数は、ファイルパスを標準(Mac/Linux/web)フォーマットの文字列として返し、パスコンポーネント間のセパレータとしてスラッシュを使用します。windowsFilePath 関数は同様ですが、コンポーネント間のセパレータとしてバックスラッシュを使用して、ファイルパス文字列をWindowsフォーマットで返します。
例::
open file"/etc/passwd"
move file "runlog24" into folder "archivedLogs"
Folder, Directory 関数
Behavior: 指定したファイルパスの親フォルダを返します。
folder 関数(またはその同義語、directory)を使用して、指定したファイルまたはフォルダを含むフォルダへのパスを取得します。
返される値は、スラッシュで終わります。ただし、the folderNamesEndWithSlash グローバルプロパティが false に設定されている場合は除きます。スラッシュで終わることで、単にファイル名を追加するだけでフルパス名を作成することが容易になります。
構文:
{the} folder of filePath
folder( filePath )
指定された filePath(以下のSyntaxを参照)が絶対パスでない場合、それは現在の作業フォルダに対する相対パスとして扱われます。これは the folder グローバルプロパティで示されます。folder 関数は、fileDescription オブジェクト( files() や fileDescription() 関数の返り値など)またはスクリプトファイルオブジェクトを引数に呼び出すこともできます。これにより、指定されたファイルの親フォルダを取得します。
フォルダ関数によって返される値は、実際には fileDescription オブジェクトですが、ほとんどの目的では単に文字列として扱うことができます。その文字列値はフォルダへのフルパスです。
例:
put the folder of myFile into myFolder
put folder(someFile) & "siblingFileName" into newFile
LastPathComponent 関数
Behavior: ファイルシステムオブジェクトのローカル名を返し、親フォルダへのパスを除去します。
lastPathComponent 関数は、ファイルまたはフォルダのフルパス名がある場合に使用します。そして、フルパスなしで、ただローカル名を取得したい場合に使用します。
構文:
{the} lastPathComponent of filePath
lastPathComponent( filePath )
例:
put the lastPathComponent of fullPath into fileName
put lastPathComponent("/Users/jc/Documents/Jan24.data") -- "Jan24.data"
FileExtension 関数
Behavior: ファイル名からファイル拡張子を返します。
fileExtension 関数は、ファイルまたはフォルダのフルネームがある場合に使用します。そして、ただファイル拡張子を取得したい場合に使用します。拡張子は名前の最後のピリオド以降の部分です。ピリオドは返される拡張子には含まれません。
構文:
{the} fileExtension of fileName
fileExtension( fileName )
例:
put the fileExtension of fileName into extension
put fileExtension("/Users/jc/Documents/Jan24.data") -- "data"
PathList 関数
Behavior: ファイルパスを、標準フォーマットの個々のパスコンポーネントのリストとして返します。
pathList 関数は、ファイルまたはフォルダのフルまたは部分的なパス名がある場合に使用します。そして、そのパスの個々のコンポーネントを標準フォーマットで含むパスリストを取得したい場合に使用します。
構文:
{the} pathList of filePath
pathList( filePath )
例:
put the pathList of filePath into filePathList
put pathList("/Users/sj/Documents/MLK.txt") --[/,Users,sj,Documents,MLK.txt]
FilePath, WindowsFilePath 関数
Behavior: ファイルパスを"解決済み"標準形式の文字列として返し、それは必要に応じて現在のフォルダを考慮したファイルへのフル絶対パスであり、".."や"~"のようなコンポーネントを解決します。
filePathまたはwindowsFilePath関数は、ファイルまたはフォルダのフルまたは部分的なパス名が任意の形式である場合に使用します。そして、パスコンポーネント間にスラッシュを使用する標準のMac/Linux/UNIXテキスト表現、またはパスコンポーネント間にバックスラッシュを使用するWindowsテキスト表現を取得したい場合に使用します。
構文:
{the} filePath of filePath
filePath( filePath )
{the} windowsFilePath of filePath
windowsFilePath( filePath )
例:
put the filePath of fullPath into stdPath
put filePath("\wiki\en\Home") -- "/wiki/en/Home"
put windowsFilePath("/Admin/theo/x32.jpg") -- "\Admin\theo\x32.jpg"
put filePath of ["a","b","c"] -- "a/b/c"
put windowsFilePath of ["a","b","c"] -- "a\b\c"
ResolvedFilePath 関数
注記
resolvedFilePath 関数は、ファイルまたはフォルダの完全な実際のパスを決定したい場合に使用します。ユーザーのホームフォルダを参照する"~"や任意のフォルダの親フォルダを参照する".."などのパスメカニズムのため、すべてが同じ場所を参照する複数の異なるパスが可能であるためです。resolvedFilePathは、同じファイルを表しているかどうかを確認す るためにパスを比較するために使用できるパスの標準表現を取得するために使用できます。
構文:
resolvedFilePath( filePath )
fileDescription( filePath )
例:
put the resolvedFilePath of fileName into resolvedName
if resolvedFilePath(it) is resolvedFilePath(saveFile) then
//Do things
end if
FileDescription 関数
Behavior: 与えられたファイルに関する情報を含むfileDescriptionオブジェクトを返します。
copy fileやrenameのようなファイルを操作するSenseTalkのコマンドや関数、またはdiskSpace()関数は、ファイル名の代わりに使用されるfileDescriptionオブジェクトを認識し、実際のファイルを識別するために長い名前を使用します。このようにして、fileDescriptionオブジェクトは、変数に保存したり、パラメータとして渡したりすることができるファイル識別子として機能します。
構文:
resolvedFilePath( filePath )
fileDescription( filePath )
_filePath_は、ファイルへのフ ルパス、または現在の作業フォルダに対するファイル名である場合があります。返される値は、fileDescriptionオブジェクトです(objectTypeが“fileDescription”に設定されたプロパティリスト)。fileDescriptionオブジェクトには、ファイルのローカル名に設定されたasTextプロパティが含まれているため、オブジェクトを表示すると、単にファイルの名前が表示されます。
#filedescription
注記
fileDescription()関数を使用して、ファイルまたはフォルダに関する情報パケットを取得します。返される値はfileDescriptionオブジェクトです。fileDescriptionは、テキストとして表示される場合、ファイルの短い名前として現れるSenseTalkオブジェクト(プロパティリスト)ですが、そのフルパスを知っており、また、ファイルに関する多くの追加情報も含んでいます。
copy fileコマンドやrenameコマンド、diskSpace()関数など、ファイルを操作する SenseTalk コマンドと関数は、ファイル名の代わりに使用される fileDescription オブジェクトを認識し、長い名前を使用して実際のファイルを識別します。このように、fileDescription オブジェクトは、変数に格納したり、パラメータとして渡したりできるファイル識別子として機能します。
fileDescriptionオブジェクトは、files()やfolders()のような関数からも取得できます。これらはいずれもfileDescriptionsのリストを返します。
例:
put fileDescription("/tmp/data") into fileInfo
put fileInfo is a fileDescription --> True
put fileInfo-- "data"
put the long name of FileInfo-- "/tmp/data"
put fileInfo's NSFileSize into dataSize
SpecialFolderPath 関数
Behavior: SenseTalkが実行されているホストコンピュータ上の多くの特別なフォルダへのファイルシステムパスを返します。
Parameters: そのフォルダへのパスを取得する特別なフォルダの名前。対応しているフォルダには、home, system, library, applications, demo applications, developer applications, admin applications, developer, users, documentation, documents, core services, desktop, caches, application support, fonts, preferences, temporary (または temp), そして rootが含まれます。
そのユーザーのホームフォルダへのパスを取得するために、ユーザーのログイン名に続いてチルダ(~)を使って関数を呼び出します。これは、下の第二の例で示されています。
フォルダのドメインを指定するために、オプションの二番目のパラメータを与えることができます。_domainName_は、次のいずれかにすることができます: user, local, network, system, または all。allのドメインが指定された場合、複数のパスがリストとして返 される場合があります。ドメインが指定されていない場合、リクエストされたフォルダに適したドメインが想定されます。
the availableStringEncodings
the availableStringEncodings
folder filePath
directory filePath
例::
put specialFolderPath("applications") -- "/Applications"
例::
put specialFolderPath("~brenda") -- "/Users/brenda"
例::
put specialFolderPath("library", "local") -- "/Library"
よく使われるフォルダについては、以下に示すようなシンプルな代替構文を使用することができます。このオプションは、一時(temp)、ホーム、ドキュメント、およびデスクトップフォルダでのみ動作します。
例::
put the temporary folder -- 現在のユーザーの一時フォルダのパスを返す
put the home folder -- "/Users/<user_name>" where <user_name> is the name of the current user
put the documents folder -- "/Users/<user_name>/Documents"
put the desktop folder -- "/Users/<user_name>/Desktop"