Folder
Folder
オブジェクトは Folder
コマンドによって作成されます。 これらのオブジェクトには、(実在しているか否かに関わらず) フォルダーへの参照が格納されます。 たとえば、新規フォルダーを作成するために Folder
コマンドを実行した場合、有効な Folder
オブジェクトが作成されますが、folder.create()
関数を呼び出すまで、ディスク上にはなにも保存されていません。
例題
"JohnSmith" フォルダーを作成します:
Form.curfolder:=Folder(fk database folder)
Form.curfolder:=Folder("C:\\Users\\JohnSmith\\";fk platform path)
パス名
Folder
オブジェクトは、filesystems
や posix
シンタックスを含む、いくつかのパス名をサポートしています。 使用できるパス名についての詳細は パス名 ページを参照ください。
Folder オブジェクト
Folder
履歴
リリース | 内容 |
---|---|
19 R8 | fk home folder をサポート |
17 R5 | 追加 |
Folder ( path : Text { ; pathType : Integer }{ ; * } ) : 4D.Folder
Folder ( folderConstant : Integer { ; * } ) : 4D.Folder
引数 | タイプ | 説明 | |
---|---|---|---|
path | Text | -> | フォルダーパス |
folderConstant | Integer | -> | 4Dフォルダー定数 |
pathType | Integer | -> | 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 path | 1 | プラットフォーム特有のシンタックスで表現されたパス (プラットフォームパス名の場合には必須) |
fk posix path | 0 | POSIXシンタックスで表現されたパス (デフォルト) |
Folder ( folderConstant { ; * } )
folderConstant には、以下の定数のどれか一つを指定して 4Dビルトインの、またはシステムフォルダーを渡します:
定数 | 値 | 説明 |
---|---|---|
fk applications folder | 116 | |
fk data folder | 9 | 関連づけられたファイルシステム: "/DATA" |
fk database folder | 4 | 関連づけられたファイルシステム: "/PACKAGE" |
fk desktop folder | 115 | |
fk documents folder | 117 | ユーザーのドキュメントフォルダー |
fk home folder | 118 | ユーザーのカレントホームフォルダー (通常は /Users/<username>/ ) |
fk licenses folder | 1 | マシンの 4Dライセンスファイルを格納しているフォルダー |
fk logs folder | 7 | 関連づけられたファイルシステム: "/LOGS" |
fk mobileApps folder | 10 | |
fk remote database folder | 3 | それぞれの 4Dリモートマシン上に作成された 4Dデータベースフォルダー |
fk resources folder | 6 | 関連づけられたファイルシステム: "/RESOURCES" |
fk system folder | 100 | |
fk user preferences folder | 0 | ユーザー環境設定ファイルを保存している、ユーザーホームフォルダー内の 4Dフォルダー |
fk web root folder | 8 | データベースのカレントの 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
引数 | タイプ | 説明 | |
---|---|---|---|
destinationFolder | 4D.Folder | -> | 宛先フォルダー |
newName | Text | -> | コピー先フォルダーの名前 |
overwrite | Integer | -> | 既存要素を上書きするには fk overwrite を渡します |
戻り値 | 4D.Folder | <- | コピーされたフォルダー |
説明
.copyTo()
関数は、Folder
オブジェクトを、destinationFolder 引数で指定したフォルダーへとコピーします。
destinationFolder 引数が指定するフォルダーはディスク上に存在している必 要があり、そうでない場合にはエラーが生成されます。
デフォルトで、フォルダーは元の名前を維持したままコピーされます。 コピーの際にフォルダー名を変更したい場合、新しい名前を newName に渡します。 新しい名前は命名規則に則っている必要があります (例: ":", "/", 等の文字を含んでいない、など)。そうでない場合、エラーが返されます。
destinationFolder 引数が指定するフォルダー内に同じ名前のフォルダーが既に存在する場合、4D はデフォルトでエラーを生成します。 overwrite に fk overwrite
定数を渡すことで、既存のフォルダーを無視して上書きすることができます:
定数 | 値 | 説明 |
---|---|---|
fk overwrite | 4 | 既存要素があれば、それを上書きします |
戻り値
コピーされた 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
引数 | タイプ | 説明 | |
---|---|---|---|
destinationFolder | 4D.Folder | -> | エイリアスまたはショートカットの作成先フォルダー |
aliasName | Text | -> | エイリアスまたはショートカットの名称 |
aliasType | Integer | -> | エイリアスリンクのタイプ |
戻り値 | 4D.File | <- | エイリアスまたはショートカットのフォルダー参照 |
説明
.createAlias()
関数は、destinationFolder オブジェクトで指定されたフォルダー内に、aliasName が指定する名称で、対象フォルダーへのエイリアス (macOS) またはショートカット (Windows) を作成します。
aliasName には、作成するエイリアスまたはショートカットの名前を渡します。
macOS 上では、この関数はデフォルトで標準エイリアスを作成します。 aliasType 引数を渡すことで、シンボリックリンクを作成することもできます。 以下の定数を使用することができます:
定数 | 値 | 説明 |
---|---|---|
fk alias link | 0 | エイリアスリンク (デフォルト) |
fk symbolic link | 1 | シンボリックリンク (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 | Integer | -> | フォルダー削除のオプション |
説明
.delete()
関数は、フォルダーを削除します。
セキュリティ上の理由から、option 引数を渡さなかった場合はデフォルトで、.delete()
は空のフォルダーしか削除しません。 空でないフォルダーを削除するには、以下の定数のいずれか一つを option 引数として渡す必要があります:
定数 | 値 | 説明 |
---|---|---|
Delete only if empty | 0 | フォルダーが空の場合のみ削除します |
Delete with contents | 1 | フォルダーを中身ごと削除します |
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
引数 | タイプ | 説明 | |
---|---|---|---|
path | Text | -> | ファイルの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 | Integer | -> | ファイルリストのオプション |
戻り値 | Collection | <- | 子ファイルオブジェクトのコレクション |
説明
.files()
関数は、フォルダーに格納されている File
オブジェクトのコレクションを返します。
エイリアスまたはシンボリックリンクは解決されません。
options引数を渡さなかった場合はデフォルトで、フォルダーの第一階層にあるファイルのみがコレクションに返されます。これには非表示のファイルや、フォルダーも含まれます。 options 引数に以下の定数を一つ以上渡すことで、このふるまいを変更することができます:
定数 | 値 | 説明 |
---|---|---|
fk recursive | 1 | コレクションには、指定フォルダーとそのサブフォルダーのファイルが含まれます |
fk ignore invisible | 8 | 非表示設定のファイルは表示されません |
戻り値
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 | Text | -> | ファイルの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 | Integer | -> | フォルダーリストのオプション |
戻り値 | Collection | <- | 子フォルダーオブジェクトのコレクション |