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

Folder

Folder objects are created with the Folder command. これらのオブジェクトには、(実在しているか否かに関わらず) フォルダーへの参照が格納されます。 たとえば、新規フォルダーを作成するために 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 オブジェクトを返します

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 型の新しいオブジェクトを作成して返します。 It is identical to the Folder command (shortcut).

It is recommended to use the Folder shortcut command instead of 4D.Folder.new().

.copyTo()

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

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

引数説明
destinationFolder4D.Folder->宛先フォルダー
newNameテキスト->コピー先フォルダーの名前
overwrite整数->既存要素を上書きするには 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

引数説明
戻り値ブール<-フォルダーが正常に作成された場合には 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->エイリアスまたはショートカットの作成先フォルダー
aliasNameテキスト->エイリアスまたはショートカットの名称
aliasType整数->エイリアスリンクのタイプ
戻り値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 } )

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

説明

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

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

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

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

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

Delete with contents を渡した場合:

  • フォルダーと、その中身がすべて削除されます。 警告: フォルダーまたはその中身がロックされている、あるいは読み取り専用に設定されていたとしても、カレントユーザーが適切なアクセス権を持っていた場合には、フォルダーはその中身ごと削除されます。
  • このフォルダー、またはその中のフォルダーのどいずれかが削除できなかった場合、削除できない要素が検知された時点で削除は中止され、エラー(*) が返されます。 このとき、フォルダーは途中までしか削除されていない可能性があります。 When deletion is aborted, you can use the Last errors command to retrieve the name and path of the offending file.
  • フォルダーが存在しない場合、コマンドは何もせず、エラーは返されません。

    (*) 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

引数説明
pathテキスト->ファイルの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

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

説明

.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

引数説明
pathテキスト->ファイルの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

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

説明

.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

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

説明

.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->宛先フォルダー
newNameテキスト->移動先でのフォルダーの完全な名称
戻り値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

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

説明

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

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

返されるオブジェクト

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

例題

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