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 オブジェクト
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コマンドの使用が推奨されます。
.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")
.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 を渡した場合:
- フォルダーと、その中身がすべて削除されます。 警告: フォルダーまたはその中身がロックされている、あるいは読み取り専用に設定されていたとしても、カレントユーザーが適切なアクセス権を持っていた場合には、フォルダーはその中身ごと削除されます。
- このフォルダー、またはその中のフォルダーのどいずれかが削除できなかった場合、削除できない要素が検知された時点で削除は中止され、エラー(*) が返されます。 このとき、フォルダーは途中までしか削除されていない可能性があります。 削除が中止された場合、Last errorsコマンドを使用して原因となったファイルの名前とパスを取得することができます。
- フォルダーが存在しない場合、コマンドは何もせず、エラーは返されません。 
 (*) Windowsの場合: -54 (ロックされたファイルを書き込みのために開こうとした)
 macOSの場合: -45 (ファイルはロックされていたか不正なパス名)
.moveTo()
履歴
| リリース | 内容 | 
|---|---|
| 17 R5 | 追加 | 
.moveTo*( destinationFolder : 4D.Folder { ; newName : Text } ) : 4D.Folder
| 引数 | 型 | 説明 | |
|---|---|---|---|
| destinationFolder | 4D.Folder | -> | 宛先フォルダー | 
| newName | Text | -> | 移動先でのフォルダーの完全な名称 | 
| 戻り値 | 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")
.rename()
履歴
| リリース | 内容 | 
|---|---|
| 17 R5 | 追加 | 
.rename*( newName : Text ) : 4D.Folder
| 引数 | 型 | 説明 | |
|---|---|---|---|
| newName | Text | -> | フォルダーの新しい完全な名称 | 
| 戻り値 | 4D.Folder | <- | 名称変更されたフォルダー | 
説明
.rename() 関数は、newName に指定した名称にフォルダー名を変更し、名称変更後の Folder オブジェクトを返します。
newName 引数は命名規則に則っている必要があります (例: ":", "/", 等の文字を含んでいない、など)。 そうでない場合、エラーが返されます。 同じ名前のファイルがすでに存在する場合には、エラーが返されます。
返されるオブジェクト
名称変更された Folder オブジェクト。
例題
 var $toRename : 4D.Folder
 $toRename:=Folder("/RESOURCES/Pictures").rename("Images")