メインコンテンツまでスキップ
バージョン: 20 R6

Folder

Folder オブジェクトは Folder コマンドによって作成されます。 これらのオブジェクトには、(実在しているか否かに関わらず) フォルダーへの参照が格納されます。 たとえば、新規フォルダーを作成するために Folder コマンドを実行した場合、有効な Folder オブジェクトが作成されますが、folder.create() 関数を呼び出すまで、ディスク上にはなにも保存されていません。

例題

"JohnSmith" フォルダーを作成します:

Form.curfolder:=Folder(fk database folder)
Form.curfolder:=Folder("C:\\Users\\JohnSmith\\";fk platform path)

パス名

Folder オブジェクトは、filesystemsposix シンタックスを含む、いくつかのパス名をサポートしています。 使用できるパス名についての詳細は パス名 ページを参照ください。

Folder オブジェクト

.copyTo( destinationFolder : 4D.Folder { ; newName : Text } { ; overwrite : Integer } ) : 4D.Folder
Folder オブジェクトを、destinationFolder 引数で指定したフォルダーへとコピーします
.create() : Boolean
Folder オブジェクトのプロパティに基づいてディスク上にフォルダーを作成します
.createAlias( destinationFolder : 4D.Folder ; aliasName : Text { ; aliasType : Integer } ) : 4D.File
エイリアス (macOS) またはショートカット (Windows) を作成します
.creationDate : Date
フォルダーの作成日
.creationTime : Time
フォルダーの作成時刻
.delete( { option : Integer } )
フォルダーを削除します
.exists : Boolean
ディスク上にフォルダーが存在する場合は true
.extension : Text
フォルダー名の拡張子
.file( path : Text ) : 4D.File
Folder オブジェクト内に File オブジェクトを作成し、その参照を返します
.files( { options : Integer } ) : Collection
フォルダーに格納されている File オブジェクトのコレクションを返します
.folder( path : Text ) : 4D.Folder
親の Folder オブジェクト内に新しい Folder オブジェクトを作成し、その参照を返します
.folders( { options : Integer } ) : Collection
親フォルダーに格納されている Folder オブジェクトのコレクションを返します
.fullName : Text
拡張子 (あれば) を含めたフォルダーの完全な名称
.getIcon( { size : Integer } ) : Picture
フォルダーのアイコンを返します
.hidden : Boolean
フォルダーがシステムレベルで "非表示" に設定されていれば true
.isAlias : Boolean
Folder オブジェクトに対しては常に false
.isFile : Boolean
フォルダーに対しては常に false
.isFolder : Boolean
フォルダーに対しては常に true
.isPackage : Boolean
フォルダーが macOS上のパッケージである (かつディスク上に存在している) 場合に true
.modificationDate : Date
フォルダーの最終変更日
.modificationTime : Time
フォルダーの最終変更時刻
.name : Text
拡張子 (あれば) を含まないフォルダー名
.original : 4D.Folder
対象フォルダーと同じフォルダーオブジェクト
.parent : 4D.Folder
対象フォルダーの親フォルダーオブジェクト
.path : Text
フォルダーの POSIXパス
.platformPath : Text
カレントプラットフォームのシンタックスで表現されたフォルダーのパス
.moveTo( destinationFolder : 4D.Folder { ; newName : Text } ) : 4D.Folder
Folder オブジェクト (ソースフォルダー) を destinationFolder が指定する移行先へと移動すると同時に、newName を指定した場合は名称も変更します
.rename( newName : Text ) : 4D.Folder
newName に指定した名称にフォルダー名を変更し、名称変更後の Folder オブジェクトを返します

Folder

履歴
リリース内容
19 R8fk home folder をサポート
17 R5追加

Folder ( path : Text { ; pathType : Integer }{ ; * } ) : 4D.Folder
Folder ( folderConstant : Integer { ; * } ) : 4D.Folder

引数説明
pathText->フォルダーパス
folderConstantInteger->4Dフォルダー定数
pathTypeInteger->fk posix path (デフォルト) または fk platform path
*->ホストデータベースのフォルダーを返すには * を渡します
戻り値4D.Folder<-新規フォルダーオブジェクト

説明

Folder コマンドは、4D.Folder 型の新しいオブジェクトを作成して返します。 このコマンドは 2種類のシンタックスを受け入れます。

Folder ( path { ; pathType } { ; * } )

path には、フォルダーパス文字列を渡します。 カスタムの文字列または ファイルシステム (例: "/DATA") を渡すことができます。

Folder コマンドでは絶対パス名のみがサポートされます。

デフォルトで、4D は POSIXシンタックスで表現されたパスを期待します。 プラットフォームパス名 (Windows または macOS) を使用する場合、pathType 引数を使用してそのことを宣言する必要があります。 以下の定数を使用することができます:

定数説明
fk platform path1プラットフォーム特有のシンタックスで表現されたパス (プラットフォームパス名の場合には必須)
fk posix path0POSIXシンタックスで表現されたパス (デフォルト)

Folder ( folderConstant { ; * } )

folderConstant には、以下の定数のどれか一つを指定して 4Dビルトインの、またはシステムフォルダーを渡します:

定数説明
fk applications folder116
fk data folder9関連づけられたファイルシステム: "/DATA"
fk database folder4関連づけられたファイルシステム: "/PACKAGE"
fk desktop folder115
fk documents folder117ユーザーのドキュメントフォルダー
fk home folder118ユーザーのカレントホームフォルダー (通常は /Users/<username>/)
fk licenses folder1マシンの 4Dライセンスファイルを格納しているフォルダー
fk logs folder7関連づけられたファイルシステム: "/LOGS"
fk mobileApps folder10
fk remote database folder3それぞれの 4Dリモートマシン上に作成された 4Dデータベースフォルダー
fk resources folder6関連づけられたファイルシステム: "/RESOURCES"
fk system folder100
fk user preferences folder0ユーザー環境設定ファイルを保存している、ユーザーホームフォルダー内の 4Dフォルダー
fk web root folder8データベースのカレントの Webルートフォルダー: ただし "/PACKAGE/path" のパッケージ内にある場合。そうでない場合はフルパス。

コマンドがコンポーネントから呼び出されている場合、* 引数を渡してホストデータベースのパスを取得するようにします。 * 引数を省略すると、常に null オブジェクトが返されます。

Windows の場合、統合されたクライアントでは、ShareLocalResourcesOnWindowsClient BuildApp キー を使用すると、ビルトインフォルダーの場所が変更されます。

4D.Folder.new()

履歴
リリース内容
18 R6追加

4D.Folder.new ( path : Text { ; pathType : Integer }{ ; * } ) : 4D.Folder
4D.Folder.new ( folderConstant : Integer { ; * } ) : 4D.Folder

説明

4D.Folder.new() 関数は、4D.Folder 型の新しいオブジェクトを作成して返します。 この関数の機能は、Folder コマンドと同一です。

4D.Folder.new() よりも、短い Folder コマンドの使用が推奨されます。

.copyTo()

履歴
リリース内容
17 R5追加

.copyTo( destinationFolder : 4D.Folder { ; newName : Text } { ; overwrite : Integer } ) : 4D.Folder

引数説明
destinationFolder4D.Folder->宛先フォルダー
newNameText->コピー先フォルダーの名前
overwriteInteger->既存要素を上書きするには fk overwrite を渡します
戻り値4D.Folder<-コピーされたフォルダー

説明

.copyTo() 関数は、Folder オブジェクトを、destinationFolder 引数で指定したフォルダーへとコピーします。

destinationFolder 引数が指定するフォルダーはディスク上に存在している必要があり、そうでない場合にはエラーが生成されます。

デフォルトで、フォルダーは元の名前を維持したままコピーされます。 コピーの際にフォルダー名を変更したい場合、新しい名前を newName に渡します。 新しい名前は命名規則に則っている必要があります (例: ":", "/", 等の文字を含んでいない、など)。そうでない場合、エラーが返されます。

destinationFolder 引数が指定するフォルダー内に同じ名前のフォルダーが既に存在する場合、4D はデフォルトでエラーを生成します。 overwritefk overwrite 定数を渡すことで、既存のフォルダーを無視して上書きすることができます:

定数説明
fk overwrite4既存要素があれば、それを上書きします

戻り値

コピーされた Folder オブジェクト。

例題

ユーザーのドキュメントフォルダーにあるピクチャーフォルダーを、データベースフォルダー内にコピーします。

var $userImages; $copiedImages : 4D.Folder
$userImages:=Folder(fk documents folder).folder("Pictures")
$copiedImages:=$userImages.copyTo(Folder(fk database folder);fk overwrite)

.create()

履歴
リリース内容
17 R5追加

.create() : Boolean

引数説明
戻り値Boolean<-フォルダーが正常に作成された場合には true、それ以外の場合は false

説明

.create() 関数は、 Folder オブジェクトのプロパティに基づいてディスク上にフォルダーを作成します。

必要であれば、 関数は platformPath あるいは path プロパティの詳細に基づいてフォルダー階層を作成します。 フォルダーがディスク上にすでに存在する場合、関数は何もせず、false を返します (エラーは返されません)。

戻り値

  • フォルダーが正常に作成された場合には true
  • すでに同じ名前のフォルダーが存在する、あるいはエラーが発生した場合には false

例題 1

データベースフォルダー内に空のフォルダーを作成します:

var $created : Boolean
$created:=Folder("/PACKAGE/SpecialPrefs").create()

例題 2

データベースフォルダー内に "/Archives2019/January/" フォルダーを作成します:

$newFolder:=Folder("/PACKAGE/Archives2019/January")
If($newFolder.create())
ALERT($newFolder.name+" フォルダーが作成されました。")
Else
ALERT($newFolder.name+" フォルダーは作成できませんでした。")
End if

.createAlias()

履歴
リリース内容
17 R5追加

.createAlias( destinationFolder : 4D.Folder ; aliasName : Text { ; aliasType : Integer } ) : 4D.File

引数説明
destinationFolder4D.Folder->エイリアスまたはショートカットの作成先フォルダー
aliasNameText->エイリアスまたはショートカットの名称
aliasTypeInteger->エイリアスリンクのタイプ
戻り値4D.File<-エイリアスまたはショートカットのフォルダー参照

説明

.createAlias() 関数は、destinationFolder オブジェクトで指定されたフォルダー内に、aliasName が指定する名称で、対象フォルダーへのエイリアス (macOS) またはショートカット (Windows) を作成します。

aliasName には、作成するエイリアスまたはショートカットの名前を渡します。

macOS 上では、この関数はデフォルトで標準エイリアスを作成します。 aliasType 引数を渡すことで、シンボリックリンクを作成することもできます。 以下の定数を使用することができます:

定数説明
fk alias link0エイリアスリンク (デフォルト)
fk symbolic link1シンボリックリンク (macOSのみ)

Windows 上では、常にショートカット (.lnk ファイル) が作成されます (aliasType 引数は無視されます)。

返されるオブジェクト

isAlias プロパティが true に設定された 4D.File オブジェクトを返します。

例題

データベースフォルダー内のアーカイブフォルダーへのエイリアスを作成します:

$myFolder:=Folder("C:\\Documents\\Archives\\2019\\January";fk platform path)
$aliasFile:=$myFolder.createAlias(Folder("/PACKAGE");"Jan2019")

.creationDate

履歴
リリース内容
17 R5追加

.creationDate : Date

説明

.creationDate プロパティは、フォルダーの作成日を返します。

このプロパティは 読み取り専用 です。

.creationTime

履歴
リリース内容
17 R5追加

.creationTime : Time

説明

.creationTime プロパティは、フォルダーの作成時刻を返します (00:00 からの経過秒数の形式)。

このプロパティは 読み取り専用 です。

.delete()

履歴
リリース内容
17 R5追加

.delete( { option : Integer } )

引数説明
optionInteger->フォルダー削除のオプション

説明

.delete() 関数は、フォルダーを削除します。

セキュリティ上の理由から、option 引数を渡さなかった場合はデフォルトで、.delete() は空のフォルダーしか削除しません。 空でないフォルダーを削除するには、以下の定数のいずれか一つを option 引数として渡す必要があります:

定数説明
Delete only if empty0フォルダーが空の場合のみ削除します
Delete with contents1フォルダーを中身ごと削除します

Delete only if empty が渡された、または option 引数を渡さなかった場合:

  • フォルダーが空の場合にしか削除されません。そうでない場合、コマンドは何もせず、エラー-47 が生成されます。
  • フォルダーが存在しない場合、エラー-120 が生成されます。

Delete with contents を渡した場合:

  • フォルダーと、その中身がすべて削除されます。 警告: フォルダーまたはその中身がロックされている、あるいは読み取り専用に設定されていたとしても、カレントユーザーが適切なアクセス権を持っていた場合には、フォルダーはその中身ごと削除されます。
  • このフォルダー、またはその中のフォルダーのどいずれかが削除できなかった場合、削除できない要素が検知された時点で削除は中止され、エラー(*) が返されます。 このとき、フォルダーは途中までしか削除されていない可能性があります。 削除が中止された場合、GET LAST ERROR STACK コマンドを使用して原因となったファイルの名前とパスを取得することができます。
  • フォルダーが存在しない場合、コマンドは何もせず、エラーは返されません。

    (*) Windowsの場合: -54 (ロックされたファイルを書き込みのために開こうとした)
    macOSの場合: -45 (ファイルはロックされていたか不正なパス名)

.exists

履歴
リリース内容
17 R5追加

.exists : Boolean

説明

.exists プロパティは、ディスク上にフォルダーが存在する場合は true を返します (それ以外の場合は false)。

このプロパティは 読み取り専用 です。

.extension

履歴
リリース内容
17 R5追加

.extension : Text

説明

.extension プロパティは、フォルダー名の拡張子を返します (あれば)。 拡張子は必ず"." で始まります。 フォルダー名が拡張子を持たない場合には、このプロパティは空の文字列を返します。

このプロパティは 読み取り専用 です。

.file()

履歴
リリース内容
17 R5追加

.file( path : Text ) : 4D.File

引数説明
pathText->ファイルのPOSIX相対パス名
戻り値4D.File<-File オブジェクト (無効な POSIXパスの場合には null)

説明

.file() 関数は、Folder オブジェクト内に File オブジェクトを作成し、その参照を返します。

path には、返すべきファイルの相対的パスを POSIX 形式で渡します。 このパスは、親フォルダーを起点として評価されます。

戻り値

File オブジェクト (無効な POSIX path の場合には null)。

例題

var $myPDF : 4D.File
$myPDF:=Folder(fk documents folder).file("Pictures/info.pdf")

.files()

履歴
リリース内容
17 R5追加

.files( { options : Integer } ) : Collection

引数説明
optionsInteger->ファイルリストのオプション
戻り値Collection<-子ファイルオブジェクトのコレクション

説明

.files() 関数は、フォルダーに格納されている File オブジェクトのコレクションを返します。

エイリアスまたはシンボリックリンクは解決されません。

options引数を渡さなかった場合はデフォルトで、フォルダーの第一階層にあるファイルのみがコレクションに返されます。これには非表示のファイルや、フォルダーも含まれます。 options 引数に以下の定数を一つ以上渡すことで、このふるまいを変更することができます:

定数説明
fk recursive1コレクションには、指定フォルダーとそのサブフォルダーのファイルが含まれます
fk ignore invisible8非表示設定のファイルは表示されません

戻り値

File オブジェクトのコレクション。

例題 1

データベースフォルダー内に非表示ファイルがないかどうかを調べます:

 var $all; $noInvisible : Collection
$all:=Folder(fk database folder).files()
$noInvisible:=Folder(fk database folder).files(fk ignore invisible)
If($all.length#$noInvisible.length)
ALERT("データベースフォルダーには非表示のファイルが存在します。")
End if

例題 2

ドキュメントフォルダー内にある、非表示でないファイルをすべて取得します:

 var $recursive : Collection
$recursive:=Folder(fk documents folder).files(fk recursive+fk ignore invisible)

.folder()

履歴
リリース内容
17 R5追加

.folder( path : Text ) : 4D.Folder

引数説明
pathText->ファイルのPOSIX相対パス名
戻り値4D.Folder<-作成された Folder オブジェクト (無効な POSIX path の場合には null)

説明

.folder() 関数は、親の Folder オブジェクト内に新しい Folder オブジェクトを作成し、その参照を返します。

path には、返すべきフォルダーの相対的パスを POSIX 形式で渡します。 このパスは、親フォルダーを起点として評価されます。

戻り値

Folder オブジェクト (無効な POSIX path の場合には null)。

例題

 var $mypicts : 4D.Folder
$mypicts:=Folder(fk documents folder).folder("Pictures")

.folders()

履歴
リリース内容
17 R5追加

.folders( { options : Integer } ) : Collection

引数説明
optionsInteger->フォルダーリストのオプション
戻り値Collection<-子フォルダーオブジェクトのコレクション

説明

.folders() 関数は、親フォルダーに格納されている Folder オブジェクトのコレクションを返します。

options引数を渡さなかった場合はデフォルトで、フォルダーの第一階層にあるフォルダーのみがコレクションに返されます。 options 引数に以下の定数を一つ以上渡すことで、このふるまいを変更することができます:

定数説明
fk recursive1コレクションには、指定フォルダーとそのサブフォルダーのフォルダーが含まれます
fk ignore invisible8非表示設定のフォルダーは表示されません

戻り値

Folder オブジェクトのコレクション。

例題

データベースフォルダー内にあるすべてのフォルダーおよびサブフォルダーのコレクションを取得します:

 var $allFolders : Collection
$allFolders:=Folder("/PACKAGE").folders(fk recursive)

.fullName

履歴
リリース内容
17 R5追加

.fullName : Text

説明

.fullName プロパティは、拡張子 (あれば) を含めたフォルダーの完全な名称を返します。

このプロパティは 読み取り専用 です。

.getIcon()

履歴
リリース内容
17 R5追加

.getIcon( { size : Integer } ) : Picture

引数説明
sizeInteger->取得するピクチャーの一辺の長さ (ピクセル単位)
戻り値Picture<-アイコン

説明

.getIcon() 関数は、フォルダーのアイコンを返します。

任意の size 引数を渡すと、返されるアイコンのサイズをピクセル単位で指定することができます。 この値は、実際にはアイコンを格納している正方形の一辺の長さを表しています。 アイコンは通常、32x32ピクセル ("大きいアイコン") または 16x16ピクセル ("小さいアイコン") で定義されています。 この引数に 0 を渡すか省略した場合、"大きいアイコン" が返されます。

フォルダーがディスク上に存在しない場合、デフォルトの空のアイコンが返されます。

戻り値

フォルダーアイコンの ピクチャー

.hidden

履歴
リリース内容
17 R5追加

.hidden : Boolean

説明

.hidden プロパティは、フォルダーがシステムレベルで "非表示" に設定されていれば true を返します (それ以外の場合は false)。

このプロパティは 読み取り専用 です。

.isAlias

履歴
リリース内容
17 R5追加

.isAlias : Boolean

説明

.isAlias プロパティは、Folder オブジェクトに対しては常に false を返します。

このプロパティは 読み取り専用 です。

.isFile

履歴
リリース内容
17 R5追加

.isFile : Boolean

説明

.isFile プロパティは、フォルダーに対しては常に false を返します。

このプロパティは 読み取り専用 です。

.isFolder

履歴
リリース内容
17 R5追加

.isFolder : Boolean

説明

.isFolder プロパティは、フォルダーに対しては常に true を返します。

このプロパティは 読み取り専用 です。

.isPackage

履歴
リリース内容
17 R5追加

.isPackage : Boolean

説明

.isPackage プロパティは、フォルダーが macOS上のパッケージである (かつディスク上に存在している) 場合に true を返します。 それ以外の場合は false を返します。

Windows 上においては、.isPackage は常に false を返します。

このプロパティは 読み取り専用 です。

.modificationDate

履歴
リリース内容
17 R5追加

.modificationDate : Date

説明

.modificationDate プロパティは、フォルダーの最終変更日を返します。

このプロパティは 読み取り専用 です。

.modificationTime

履歴
リリース内容
17 R5追加

.modificationTime : Time

説明

.modificationTime プロパティは、フォルダーの最終変更時刻を返します (00:00 からの経過秒数の形式)。

このプロパティは 読み取り専用 です。

.moveTo()

履歴
リリース内容
17 R5追加

.moveTo( destinationFolder : 4D.Folder { ; newName : Text } ) : 4D.Folder

引数説明
destinationFolder4D.Folder->宛先フォルダー
newNameText->移動先でのフォルダーの完全な名称
戻り値4D.Folder<-移動したフォルダー

説明

.moveTo() 関数は、Folder オブジェクト (ソースフォルダー) を destinationFolder が指定する移行先へと移動すると同時に、newName を指定した場合は名称も変更します。

destinationFolder 引数が指定するフォルダーはディスク上に存在している必要があり、そうでない場合にはエラーが生成されます。

デフォルトで、移動したフォルダーは元の名前を維持します。 移動の際にフォルダー名を変更したい場合、新しい完全な名前を newName に渡します。 新しい名前は命名規則に則っている必要があります (例: ":", "/", 等の文字を含んでいない、など)。そうでない場合、エラーが返されます。

返されるオブジェクト

移動後の Folder オブジェクト。

例題

フォルダーを移動し、名称も変更します:

 var $tomove; $moved : Object
$docs:=Folder(fk documents folder)
$tomove:=$docs.folder("Pictures")
$tomove2:=$tomove.moveTo($docs.folder("Archives");"Pic_Archives")

.name

履歴
リリース内容
17 R5追加

.name : Text

説明

.name プロパティは、拡張子 (あれば) を含まないフォルダー名を返します。

このプロパティは 読み取り専用 です。

.original

履歴
リリース内容
17 R5追加

.original : 4D.Folder

説明

.original プロパティは、対象フォルダーと同じフォルダーオブジェクトを返します。

このプロパティは 読み取り専用 です。

このプロパティは、フォルダーやファイルを処理する汎用的なコードを書くために使用できます。

.parent

履歴
リリース内容
17 R5追加

.parent : 4D.Folder

説明

.parent プロパティは、対象フォルダーの親フォルダーオブジェクトを返します。 パスがシステムパスを表す場合 (例: "/DATA/")、システムパスが返されます。

親フォルダーが存在しない場合 (root) は、このプロパティは null値を返します。

このプロパティは 読み取り専用 です。

.path

履歴
リリース内容
17 R5追加

.path : Text

説明

.path プロパティは、フォルダーの POSIXパスを返します。 パスがファイルシステムを表す場合 (例: "/DATA/")、ファイルシステムが返されます。

このプロパティは 読み取り専用 です。

.platformPath

履歴
リリース内容
17 R5追加

.platformPath : Text

説明

.platformPath プロパティは、カレントプラットフォームのシンタックスで表現されたフォルダーのパスを返します。

このプロパティは 読み取り専用 です。

.rename()

履歴
リリース内容
17 R5追加

.rename( newName : Text ) : 4D.Folder

引数説明
newNameText->フォルダーの新しい完全な名称
戻り値4D.Folder<-名称変更されたフォルダー

説明

.rename() 関数は、newName に指定した名称にフォルダー名を変更し、名称変更後の Folder オブジェクトを返します。

newName 引数は命名規則に則っている必要があります (例: ":", "/", 等の文字を含んでいない、など)。 そうでない場合、エラーが返されます。 同じ名前のファイルがすでに存在する場合には、エラーが返されます。

返されるオブジェクト

名称変更された Folder オブジェクト。

例題

 var $toRename : 4D.Folder
$toRename:=Folder("/RESOURCES/Pictures").rename("Images")