ファイルやフォルダの参照

SenseTalkには、ファイルおよびファイルシステムを扱うための方法がいくつか用意されています。ファイルおよびファイルシステム情報へのアクセスや作業ディレクトリの決定または変更、パスおよびディレクトリに関するその他の詳細については、以下に説明するコマンドと関数をお使いいただけます。ファイルサイズや割り当てられているパーミッションなど、個別ファイルのプロパティにアクセスすることができます。

注:ファイルとファイルシステムオブジェクトを操作するためのSenseTalkコマンドと関数は、テスト対象システム(SUT)上ではなく、ローカルマシン上で機能します。

下の例では、SenseTalkを使ったファイルおよびファイルシステム情報へのアクセス方法を紹介しています。ファイルの作成または削除、ファイルへの書き込み、その他の方法によるファイルまたはファイルシステムオブジェクトの変更といったトピックについては、ファイルやフォルダとのやり取りをご覧ください。

注意:SenseTalkスクリプト内で参照するファイルは、スイートウィンドウ内のリソースペインを通じてEggplant Functionalに追加することが推奨されます。本メソッドは、所定のスイート向けのスイートディレクトリ内で、ファイルをリソースディレクトリに格納します。SenseTalkはローカルファイルシステム上の任意の場所に格納されたファイルにアクセスできますが、リソースディレクトリを使用することで、追加的な機能がもたらされます。詳細については、リソースペインを参照してください。

スクリプト内でファイルを参照する

スクリプト内でファイルを参照するには、ファイル名として評価される式の前にfileという語を使用します。fileの代わりにfolderという語を使用すると、フォルダの参照も同様に行えます。

open file"/etc/passwd"

move file "runlog24" into folder "archivedLogs"

技術トピック

構文: file ファイルパス

folder ファイルパス

directory ファイルパス

ファイルパスに入れることができるのは、Mac/LinuxまたはWindows形式のパステキストか、各アイテムが個々のパス構成要素を表しているリストです。

与えるパス名は、ファイルまたはフォルダのフル(絶対)パス名でも、現在の作業フォルダ(the folderグローバルプロパティを参照)に対する相対パスでも構いません。与えられた名前を基に、下記のルールに従って、SenseTalkがファイルのフル「絶対」パス名を決定します。

  • 名前がスラッシュ(/)で始まるか、パスリスト内の最初のアイテムが「/」の場合は、既に絶対ファイル名
  • 名前がドライブ文字とコロンで始まり、その後にスラッシュが続く(例、「C:\」)か、パスリスト内の最初のアイテムがドライブ文字とコロンで2つ目のアイテムがスラッシュの場合は、既に絶対ファイル名
  • 名前がチルダとスラッシュ(~/)で始まる場合は、ユーザーのホームフォルダに対する相対パス
  • 名前がチルダ(~)で始まり、その後にユーザー名が続く場合は、そのユーザーのホームフォルダに対する相対パス
  • 名前がピリオドとスラッシュ(./)で始まる場合は現在の作業フォルダからの相対パス、2つのピリオドとスラッシュ(../)で始まる場合は現在の作業フォルダの親フォルダからの相対パス
  • それ以外の場合は、現在の作業フォルダ内のファイルまたはパス

SenseTalkスクリプト内では、folderdirectoryという語は互いに交換可能です。スクリプトにおいてfolderが使われている箇所には、どこでも代わりにdirectoryを使うことができます。

folderdirectory関数

振る舞い

与えられたファイルパスの親フォルダを返します。

使用場面

folder(またはそのシノニムであるdirectory)関数は、与えられたファイルまたはフォルダを格納しているフォルダのパスを取得するときに使用します。

返される値は、the folderNamesEndWithSlashグローバルプロパティがfalseに設定されていない限り、スラッシュで終わります。末尾にスラッシュがあると、ファイル名を追加するだけで簡単にフルパス名が作成できます。

put the folder of myFile into myFolder

put folder(someFile) & "siblingFileName" into newFile

技術トピック

構文: the folder of ファイルパス

folder(ファイルパス)

与えられたファイルパスは、絶対パスでない場合、 the folderグローバルプロパティによって与えられる現在の作業フォルダに対する相対パスと見なされます。folder関数は、fileDescriptionオブジェクト(例、files()またはfileDescription()関数によって返されるオブジェクト)やスクリプトファイルオブジェクトを使って呼び出しても、その指定ファイルの親フォルダを取得することができます。

folder関数で返される値は、実際にはfileDescriptionオブジェクトですが、ほとんどの用途では単に文字列として扱うことができます。その文字列の値になるのは、フォルダのフルパスです。

lastPathComponent関数

振る舞い

親フォルダのパスを除いた、ファイルシステムオブジェクトのローカル名を返します。

使用場面

lastPathComponent関数は、ファイルまたはフォルダのフルパス名が分かっていて、フルパスなしのローカル名だけを得たいときに使用します。

put the lastPathComponent of fullPath into fileName

put lastPathComponent("/Users/jc/Documents/Jan24.data") -- "Jan24.data"

技術トピック

構文: the lastPathComponent of ファイルパス

lastPathComponent(ファイルパス)

fileExtension関数

振る舞い

ファイル名からファイル拡張子を返します。

使用場面

fileExtension関数は、ファイルまたはフォルダの完全な名前が分かっていて、ファイル拡張子だけを得たいときに使用します。名前の中の、最後のピリオドに続く部分が拡張子になります。返される拡張子にピリオドは含まれません。

put the fileExtension of fileName into extension

put fileExtension("/Users/jc/Documents/Jan24.data") -- "data"

技術トピック

構文: the fileExtension of ファイル名

fileExtension(ファイル名)

pathList関数

振る舞い

ファイルパスを、標準形式の各パス構成要素のリストとして返します。

使用場面

pathList関数は、ファイルまたはフォルダのパス名の全部または一部が分かっていて、そのパス(標準形式)の各構成要素を含んだパスリストを得たいときに使用します。

put the pathList of filePath into filePathList

put pathList("/Users/sj/Documents/MLK.txt") --(/,Users,sj,Documents,MLK.txt)

技術トピック

構文:the pathList of ファイルパス

pathList(ファイルパス)

filePath、windowsFilePath関数

振る舞い

filePath関数は、パス構成要素間の区切り文字にスラッシュを用いた標準(Mac/Linux/web)形式の文字列でファイルパスを返します。windowsFilePath関数もこれと似ていますが、こちらが返すのは、構成要素間の区切り文字にバックスラッシュを用いたWindows形式のファイルパス文字列です。

使用場面

filePathまたはwindowsFilePath関数は、ファイルまたはフォルダのパス名の全部または一部が何らかの形式で分かっていて、そのパスを標準Mac/Linux/UNIXテキスト表現(パス構成要素間にスラッシュを使用)またはWindowsテキスト表現(パス構成要素間にバックスラッシュを使用)で得たいときに使用します。

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"

技術トピック

構文: {the} filePath of ファイルパス

filePath(ファイルパス)

{the} windowsFilePath of ファイルパス

windowsFilePath(ファイルパス)

resolvedFilePath関数

振る舞い

必要に応じて現在のフォルダを考慮し、「..」や「~」などの構成要素を解決した、ファイルの完全な絶対パスである、「解決済み」標準形式の文字列でファイルパスを返します 。

使用場面

resolvedFilePath関数は、ファイルまたはフォルダの実際のフルパスを決定したいときに使用します。ユーザーのホームフォルダを指す「~」や、任意のフォルダの親フォルダを指す「..」といったパス構造があるために、 複数の異なるパスがすべて同じ場所を指すという可能性があります。resolvedFilePath関数によって得られるパスの標準表現を使うと、例えば、パス同士を比較して、同じファイルを表すものかどうかを確認することができます。

put the resolvedFilePath of fileName into resolvedName

if resolvedFilePath(it) is resolvedFilePath(saveFile) then...

技術トピック

構文: the resolvedFilePath of ファイルパス

resolvedFilePath(ファイルパス)

fileDescription関数

振る舞い

与えられたファイルに関する情報を格納したfileDescriptionオブジェクトを返します。

使用場面

fileDescription()関数は、ファイルまたはフォルダの情報一式を得たいときに使用します。返される値は、fileDescriptionオブジェクトになります。SenseTalkオブジェクト(プロパティリスト)であるfileDescriptionは、テキストとして表示された場合にはファイルのショートネームで表されますが、フルパスも把握しているほか、ファイルに関するその他の情報も多数格納しています。

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

技術トピック

構文: the fileDescription of ファイルパス

fileDescription(ファイルパス)

ファイルパスは、ファイルのフルパスでも、現在の作業フォルダに対する相対ファイル名でも構いません。返される値は、fileDescriptionオブジェクト(objectTypeが「fileDescription」に設定されたプロパティリスト)です。fileDescriptionオブジェクトのasTextプロパティには、ファイルのローカル名が設定されるため、オブジェクトを表示すると単にそのファイル名だけが表示されます。

他にも、各fileDescriptionオブジェクトは、数々の情報アイテムを保有しています。特に、「long name」プロパティにはファイルのフルパス名が格納されているほか、 ファイルが位置している親フォルダを含んだプロパティや、ファイルサイズ、所有者、パーミッションなどの情報を含んだプロパティもあります。利用できる情報を正確に把握するには、keys()関数を使用します(もしくは、オブジェクトのasTextプロパティを削除してからオブジェクトを表示します)。

copy fileコマンド、renameコマンド、diskSpace()関数などの、ファイルを扱うSenseTalkコマンドや関数は、ファイル名の代わりに使われるfileDescriptionオブジェクトを認識し、ロングネームを利用して実際のファイルを識別します。このように、fileDescriptionオブジェクトは、変数に格納したり、パラメータとして渡したりできるファイル識別子として機能することができます。

fileDescriptionオブジェクトは、files()関数やfolders()関数からも得ることができます。これらが返すのは、fileDescriptionのリストです。

SpecialFolderPath関数

挙動:SenseTalkが実行されているホストコンピュータ上にある数々の特殊フォルダのファイルシステムパスをどれでも返します。

パラメータ:パスを取得したい特殊フォルダの名前。対応フォルダ: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

ユーザーのホームフォルダのパスを取得するときは、チルダ(~)の後にユーザーのログイン名を付けて関数を呼び出します(下の2番目の例を参照)。

オプションの第2パラメータを与えると、フォルダのドメインを指定することができます。ドメインとして指定できるのは、user、local、network、system、allのいずれかです。allをドメインとして与えると、2つ以上のパスがリストの形で返されることがあります。ドメインを指定しない場合、リクエスト対象のフォルダに適したドメインが想定されます。

構文:

specialFolderPath(フォルダ名 {, ドメイン名})

例:

put specialFolderPath("applications") -- "/Applications"

例:

put specialFolderPath("~brenda") -- "/Users/brenda"

例:

put specialFolderPath("library", "local") -- "/Library"

ヒント:よく使われるいくつかのフォルダに関しては、以下のシンプルな構文を代わりに用いることができます。なお、このオプションが機能するのは、temporary(temp)、home、documentsおよびdesktopフォルダのみです。

例:

put the temporary folder -- 現在のユーザーのtemporaryフォルダのパスを返します

put the home folder -- "/Users/<user_name>"<user_name>には現在のユーザーの名前が入ります

put the documents folder -- "/Users/<user_name>/Documents"

put the desktop folder -- "/Users/<user_name>/Desktop"

ファイルプロパティにアクセスする

アクセスできるファイルまたはフォルダのプロパティは多岐にわたります。アクセス可能なプロパティは次のとおりです。

ファイルプロパティ名

説明

name

ファイルの名前(例、「myFile.txt」)

short name

拡張子なしの名前(例、「myFile」)

long name

ファイルのフルパス名(例、「/tmp/myFile.txt」)

display name

ユーザーに表示される名前

folder
directory

ファイルを格納しているフォルダのフルパス名

size

ファイルサイズ(バイト)

creation date

ファイルが作成された日付/時刻

modification date

ファイルが最後に変更された日付/時刻

permissions

ファイルパーミッションを表す文字列(下記参照)

owner permissions

「read」、「write」および/または「execute」

group permissions

「read」、「write」および/または「execute」

other permissions

「read」、「write」および/または「execute」

locked
immutable

ロックのかかったファイルの状態

entry type

「File」、「Folder」、「SymbolicLink」、「Socket」、「CharacterSpecial」、「BlockSpecial」または「Unknown」

type code

HFSタイプコード(4文字の文字列)

creator code

HFSクリエータコード(4文字の文字列)

owner name

ファイル所有者のログイン名

group name

ファイル所有グループの名前

owner id

ファイル所有者のユーザーID番号

group id

ファイル所有者のグループID番号

link destination

リンク先ファイルの相対パス名(シンボリックリンクの場合)

permissionsプロパティは、Unixのls -lコマンドで報告されるものと類似した文字列です。rwxrwxrwxの9文字から成り、それぞれが所有者、グループ、その他に対する読み取り、書き込み、実行パーミッションを示しています。存在しないパーミッションはダッシュで置き換えられます。したがって、例えばパーミッションの値がrwxr-xr-xであれば、読み取りと実行は誰でも可能、書き込みは所有者だけが可能なファイルを示します。特殊なパーミッションのフラグが適用されている場合は、区切りのコンマが付いた追加アイテムによって示されます。種類としては、setuidsetgidおよびstickyがあります。したがって、setuidファイルのパーミッション値であれば、rwxr-xr-x,setuidのようになります。

put the short name of file "/tmp/Friday.rtf"-- "Friday"

add the size of file datafile 1 to filesizeTotal

技術トピック

構文:the ファイルプロパティ of [file | folder] ファイル名

creation date、modification date、owner permissions、group permissions、other permissions、permissions、type code、creator code、owner id、group idといったプロパティは、取得するだけでなく、設定することも可能です(setコマンドを使用)。その他のファイルプロパティはすべて、読み取り専用です。

(リンク先のファイルまたはフォルダではなく)リンクのプロパティに直接アクセスするには、fileやfolderの代わりにlinkという語を使用します。

フォルダプロパティの値は、the folderNamesEndWithSlashがfalseに設定されていない限り、スラッシュで終わります。末尾にスラッシュがあると、ファイル名を追加するだけで簡単にフルパス名が作成できます。

ファイルやフォルダの有無をチェックする

there is a file ファイル名またはfile ファイル名 exists演算子を使うと、あるファイルが存在しているかどうかをチェックすることができます。もしくは、ファイルやフォルダが存在しないことを明らかにするときは、否定的なthere is not a file ファイル名there is no file ファイル名またはfile ファイル名 does not exist演算子を使います。

if file "tempWorkFile" exists then delete file "tempWorkFile"

 

if there is a file "scores" then

put file "scores" into highScores

else

put "100,100,100,100,100" into highScores

end if

 

-- dataファイルがまだ存在していない場合は空のdataファイルを作成します

if there is no file "data" then put "" into file "data"

フォルダの有無も、同様にチェック可能です。

if folder "/tmp/work" does not exist then initWorkFolder

 

This topic was last updated on 2月 01, 2019, at 11:13:23 午前.

Eggplant icon Eggplant.io | Documentation Home | User Forums | Support | Copyright © 2019 Eggplant