File
File オブジェクトは File コマンドによって作成されます。これらのオブジェクトには、(実在しているか否かに関わらず) ディスクファイルへの参照が格納されます。たとえば、新規ファイルを作成するために File コマンドを実行した場合、有効な File オブジェクトが作成されますが、file.create() 関数を呼び出すまで、ディスク上にはなにも保存されていません。
このクラスは、バイナリーでストリーム可能 です。
例題
プロジェクトフォルダーにプリファレンスファイルを作成します:
var $created : Boolean
$created:=File("/PACKAGE/SpecialPrefs/"+Current user+".myPrefs").create()
パス名
File オブジェクトは、filesystems や posix シンタックスを含む、いくつかのパス名をサポートしています。使用できるパス名についての詳細は パス名 ページを参照ください。
File オブジェクト
4D.File.new()
履歴
| リリース | 内容 |
|---|---|
| 18 R6 | 追加 |
4D.File.new ( path : Text { ; pathType : Integer } ) : 4D.File
4D.File.new ( fileConstant : Integer ) : 4D.File
説明
4D.File.new() 関数は、4D.File 型の新しいオブジェクトを作成して返します。この関数の機能は、File コマンドと同一です。
4D.File.new()よりも、短いFileコマンドの使用が推奨されます。
.copyTo()
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
.copyTo( destinationFolder : 4D.Folder { ; newName : Text } { ; overwrite : Integer } ) : 4D.File
| 引数 | 型 | 説明 | |
|---|---|---|---|
| destinationFolder | 4D.Folder | -> | 宛先フォルダー |
| newName | Text | -> | コピー先フォルダーの名前 |
| overwrite | Integer | -> | 既存要素を上書きするには fk overwrite を渡します |
| 戻り値 | 4D.File | <- | コピーされたファイル |
説明
.copyTo() 関数は、File オブジェクトを、destinationFolder 引数で指定したフォルダーへとコピーします。
destinationFolder 引数が指定するフォルダーはディスク上に存在している必要があり、そうでない場合にはエラーが生成されます。
デフォルトで、ファイルは元の名前を維持したままコピーされます。コピーの際に名称を変更したい場合、新しい名前を newName に渡します。新しい名前は命名規則に則っている必要があります (例: ":", "/", 等の文字を含んでいない、など)。 そうでない場合、エラーが返されます。
destinationFolder 引数が指定するフォルダー内に同じ名前のファイルが既に存在する場合、4D はデフォルトでエラーを生成します。 overwrite に fk overwrite 定数を渡すことで、既存のフォルダーを無視して上書きすることができます:
| 定数 | 値 | 説明 |
|---|---|---|
fk overwrite | 4 | 既存要素があれば、それを上書きします |
戻り値
コピーされた File オブジェクト。
例題
ユーザーのドキュメントフォルダーにあるピクチャーファイルを、アプリケーションフォルダー内にコピーします。
var $source; $copy : Object
$source:=Folder(fk documents folder).file("Pictures/photo.png")
$copy:=$source.copyTo(Folder("/PACKAGE");fk overwrite)
.create()
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
ZIPアーカイブには利用できません
.create() : Boolean
| 引数 | 型 | 説明 | |
|---|---|---|---|
| 戻り値 | Boolean | <- | ファイルが正常に作成された場合に true、それ以外の場合は false |
説明
.create() 関数は、File オブジェクトのプロパティに基づいてディスク上にファイルを作成します。
必要であれば、 関数は platformPath あるいは path プロパティの詳細に基づいてフォルダー階層を作成します。ファイルがディスク上にすでに存在する場合、関数は何もせず、false を返します (エラーは返されません)。
戻り値
- ファイルが正常に作成された場合には true
- すでに同じ名前のファイルが存在する、あるいはエラーが発生した場合には false
例題
データベースフォルダー内にプリファレンスファイルを作成します:
var $created : Boolean
$created:=File("/PACKAGE/SpecialPrefs/"+Current user+".myPrefs").create()
.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 オブジェクトを返します。
例題
データベースフォルダー内のファイルへのエイリアスを作成します:
$myFile:=Folder(fk documents folder).file("Archives/ReadMe.txt")
$aliasFile:=$myFile.createAlias(File("/PACKAGE");"ReadMe")
.creationDate
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
.creationDate : Date
説明
.creationDate プロパティは、ファイルの作成日を返します。
このプロパティは 読み取り専用 です。
.creationTime
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
.creationTime : Time
説明
.creationTime プロパティは、ファイルの作成時刻を返します (00:00 からの経過秒数の形式)。
このプロパティは 読み取り専用 です。
.delete()
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
.delete()
| 引数 | 型 | 説明 | |
|---|---|---|---|
| 引数を必要としません |
説明
.delete() 関数は、ファイルを削除します。
ファイルがディスク上に存在しない場合、関数は何もしません (エラーは生成されません)。
ファイルが現在開かれている場合、結果は OS に依存します:
- Windows上では、エラーが生成されます。
- macOS上では、エラーは生成されず、ファイルが削除されます。
.delete() はディスク上の任意のファイルを削除できます。これには、他のアプリケーションで作成されたドキュメントや、アプリケーションそのものも対象になります。そのため、.delete() は特に十分な注意を払って使用してください。ファイルの削除は恒久的な操作であり取り消しできません。
例題
データベースフォルダー内の特定のファイルを削除します:
$tempo:=File("/PACKAGE/SpecialPrefs/"+Current user+".prefs")
If($tempo.exists)
$tempo.delete()
ALERT("ユーザーのプリファレンスファイルが削除されました。")
End if
.exists
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
.exists : Boolean
説明
.exists プロパティは、ディスク上にファイルが存在する場合は true を返します (それ以外の場合は false)。
このプロパティは 読み取り専用 です。
.extension
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
.extension : Text
説明
.extension プロパティは、ファイル名の拡張子を返します (あれば)。拡張子は必ず"." で始まります。ファイル名が拡張子を持たない場合には、このプロパティは空の文字列を返します。
このプロパティは 読み取り専用 です。
.fullName
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
.fullName : Text
説明
.fullName プロパティは、拡張子 (あれば) を含めたファイルの完全な名称を返します。
このプロパティは 読み取り専用 です。
.getAppInfo()
履歴
| リリース | 内容 |
|---|---|
| 20 R9 | macOS 実行ファイル内のUUID を読む |
| 19 | 追加 |
.getAppInfo() : Object
| 引数 | 型 | 説明 | |
|---|---|---|---|
| 戻り値 | Object | <- | アプリケーションファイル情報 |
説明
.getAppInfo() 関数は、アプリケーションファイル情報のコンテンツをオブジェクトとして返します。
この関数は存在している、以下のサポートされているファイル形式のファイルに対して使用されなければなりません: .plist (全プラットフォーム)、.exe/.dll (Windows)、あるいは macOS 実行ファイル。ファイルがディスク上に存在しない場合、またはサポートされていないファイルの場合は、関数は空のオブジェクトを生成します(エラーは生成されません)。
.plist ファイルの場合に返されるオブジェクト(全プラットフォーム)
xml ファイルの中身は解析され、オブジェクトのプロパティとしてキーが返されます。 キーの型 (テキスト、ブール、数値) は維持されます。 .plist dict は JSON オブジェクトとして返されます。 また、.plist array は JSON 配列として返されます。
この関数は xml形式の .plist ファイル (テキスト) のみをサポートしています。バイナリー形式の .plist ファイルを対象に使用した場合、エラーが返されます。
.exe または .dll ファイルの場合に返されるオブジェクト(Windows のみ)
プロパティ値はすべてテキストです。
| プロパティ | 型 |
|---|---|
| InternalName | Text |
| ProductName | Text |
| CompanyName | Text |
| LegalCopyright | Text |
| ProductVersion | Text |
| FileDescription | Text |
| FileVersion | Text |
| OriginalFilename | Text |
macOS 実行可能ファイルの場合に返されるオブジェクト(macOS のみ)
macOS実行可能ファイルはパッケージ内部にあります(例: myApp.app/Contents/MacOS/myApp)。
この関数は、実行ファイル内で見つかったそれぞれのアーキテクチャーを表すオブジェクトのコレクションを格納した、 archs オブジェクトを返します(ファットな実行ファイルには複数のアーキテクチャーを埋め込むことができます)。コレクション内のそれぞれのオブジェクトは以下のプロパティを格納しています:
| プロパティ | 型 | 説明 |
|---|---|---|
| name | Text | アーキテクチャー名("arm64" あるいは "x86_64") |
| type | Number | アーキテクチャーの数値識別子 |
| uuid | Text | 実行ファイルUUIDのテキスト表現 |
例題 1
// info.plist の著作権情報を表示する(あらゆるプラットフォームで可能)
var $infoPlistFile : 4D.File
var $info : Object
$infoPlistFile:=File("/RESOURCES/info.plist")
$info:=$infoPlistFile.getAppInfo()
ALERT($info.Copyright)
例題 2
// アプリケーションの .exe ファイルの著作権情報を表示(windows)
var $exeFile : 4D.File
var $info : Object
$exeFile:=File(Application file; fk platform path)
$info:=$exeFile.getAppInfo()
ALERT($info.LegalCopyright)
例題 3
// アプリケーションのUUIDを取得(macOS)
var $app:=File("/Applications/myApp.app/Contents/MacOS/myApp")
var $info:=$app.getAppInfo()
$info 内の戻り値:
{
"archs":
[
{
"name":"x86_64",
"type":16777223,
"uuid":"3840983CDA32392DA4D1D32F08AB3212"
},
{
"name":"arm64",
"type":16777228,
"uuid":"E49F6BA275B931DDA183C0B0CDF0ADAF"
}
]
}
参照
.getContent()
履歴
| リリース | 内容 |
|---|---|
| 19 R2 | 4D.Blob を返します |
| 17 R5 | 追加 |
.getContent( ) : 4D.Blob
| 引数 | 型 | 説明 | |
|---|---|---|---|
| 戻り値 | 4D.Blob | <- | ファイルのコンテンツ |
説明
.getContent() 関数は、ファイルの全コンテンツを格納した 4D.Blob オブジェクトを返します。 BLOB についての詳細は、BLOB の章を参照してください。
戻り値
4D.Blob オブジェクト。
例題
ドキュメントの中身を BLOB フィールドに保存します:
var $vPath : Text
$vPath:=Select document("";"*";"Select a document";0)
If(OK=1) // ドキュメントが選択されていれば
[aTable]aBlobField:=File($vPath;fk platform path).getContent()
End if
.getIcon()
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
.getIcon( { size : Integer } ) : Picture
| 引数 | 型 | 説明 | |
|---|---|---|---|
| size | Integer | -> | 取得するピクチャーの一辺の長さ (ピクセル単位) |
| 戻り値 | Picture | <- | アイコン |
説明
.getIcon() 関数は、ファイルのアイコンを返します。
任意の size 引数を渡すと、返されるアイコンのサイズをピクセル単位で指定することができます。この値は、実際にはアイコンを格納している正方形の一辺の長さを表しています。アイコンは通常、32x32ピクセル ("大きいアイコン") または 16x16ピクセル ("小さいアイコン") で定義されています。この引数に 0 を渡すか省略した場合、"大きいアイコン" が返されます。
ファイルがディスク上に存在しない場合、デフォルトの空のアイコンが返されます。
戻り値
ファイルアイコンの ピクチャー。
.getText()
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
.getText( { charSetName : Text { ; breakMode : Integer } } ) : Text
.getText( { charSetNum : Integer { ; breakMode : Integer } } ) : Text
| 引数 | 型 | 説明 | |
|---|---|---|---|
| charSetName | Text | -> | 文字セットの名前 |
| charSetNum | Integer | -> | 文字セットの番号 |
| breakMode | Integer | -> | 改行の処理モード |
| 戻り値 | Text | <- | ドキュメントから取得したテキスト |
説明
.getText() 関数は、ファイルのコンテンツをテキストとして返します。
任意で、コンテンツの読み取りに使用する文字セットを渡します。これには、次の二つの方法があります:
- charSetName に標準の文字セット名を含んだ文字列 ("ISO-8859-1" や "UTF-8" など) を渡します。
- charSetNum に標準の文字セット名の MIBEnum ID (倍長整数) を渡します。
4D によってサポートされている文字セットの一覧については、
CONVERT FROM TEXTコマンドを参照ください。
ドキュメントにバイトオーダーマーク (BOM) が含まれている場合、4D は charSetName または charSetNum 引数で設定されている文字セットではなく、BOM で指定されたものを使用します (結果として引数は無視されます)。ドキュメントに BOM が含まれておらず、また charSetName および charSetNum 引数が渡されなかった場合、4D はデフォルトで "UTF-8" を文字セットとして使用します。
breakMode には、ドキュメントの改行文字に対しておこなう処理を指定する倍長整数を渡します。 "System Documents" テーマの、以下の定数を使用することができます: "System Documents" テーマの、以下の定数を使用することができます:
| 定数 | 値 | 説明 |
|---|---|---|
Document unchanged | 0 | 何も処理をしません。 |
Document with native format | 1 | (デフォルト) 改行は OS のネイティブフォーマットに変換されます。 macOS では CR (キャリッジリターン) に、Windows では CRLF (キャリッジリターン+ラインフィード) に変換されます。 |
Document with CRLF | 2 | 改行は Windowsフォーマット (CRLF、キャリッジリターン+ラインフィード) へと変換されます。 |
Document with CR | 3 | 改行は macOSフォーマット (CR、キャリッジリターン) へと変換されます。 |
Document with LF | 4 | 改行は Unixフォーマット (LF、ラインフィード) へと変換されます。 |
breakMode 引数を渡さなかった場合はデフォルトで、改行はネイティブモード (1) で処理されます。
戻り値
ファイルのテキスト。
例題
以下のテキストを持つドキュメントがある場合を考えます (フィールドはタブ区切りです):
id name price vat
3 thé 1.06€ 19.6
2 café 1.05€ 19.6
以下のコードを実行すると:
$myFile:=Folder(fk documents folder).file("Billing.txt") // デフォルトでUTF-8
$txt:=$myFile.getText()
... この場合、$txt の値は次の通りです:
"id\tname\tprice\tvat\r\n3\tthé\t1.06€\t19.6\r\n2\tcafé\t1.05€\t19.6"
このとき、区切り文字は \t (タブ) で、改行コードは \r\n (CRLF) です。
以下は、同じファイルで改行コードが異なる例です:
$txt:=$myFile.getText("UTF-8"; Document with LF)
この場合、$txt の値は次の通りです:
"id\tname\tprice\tvat\n3\tthé\t1.06€\t19.6\n2\tcafé\t1.05€\t19.6"
このとき、改行コードは \n (LF) です。
.hidden
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
.hidden : Boolean
説明
.hidden プロパティは、ファイルがシステムレベルで "非表示" に設定されていれば true を返します (それ以外の場合は false)。
読み書き可能 プロパティです。
.isAlias
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
.isAlias : Boolean
説明
.isAlias プロパティは、ファイルがエイリアス、ショートカット、シンボリックリンクのいずれかである場合には true を返し、それ以外の場合には false を返します。
このプロパティは 読み取り専用 です。
.isFile
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
.isFile : Boolean
説明
.isFile プロパティは、ファイルに対しては常に true を返します。
このプロパティは 読み取り専用 です。
.isFolder
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
.isFolder : Boolean
説明
.isFolder プロパティは、ファイルに対しては常に false を返します。
このプロパティは 読み取り専用 です。
.isWritable
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
.isWritable : Boolean
説明
.isWritable プロパティは、ファイルがディスク上に存在し、書き込み可能な場合に true を返します。
このプロパティは 4Dアプリケーションがディスクに書き込めるかどうか (アクセス権限) をチェックし、ファイルの writable (書き込み可能) 属性のみ依存するわけではありません。
このプロパティは 読み取り専用 です。
Example
$myFile:=File("C:\\Documents\\Archives\\ReadMe.txt";fk platform path)
If($myFile.isWritable)
$myNewFile:=$myFile.setText("Added text")
End if
.modificationDate
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
.modificationDate : Date
説明
.modificationDate プロパティは、ファイルの最終変更日を返します。
このプロパティは 読み取り専用 です。
.modificationTime
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
.modificationTime : Time
説明
.modificationTime プロパティは、ファイルの最終変更時刻を返します (00:00 からの経過秒数の形式)。
このプロパティは 読み取り専用 です。
.moveTo()
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
.moveTo( destinationFolder : 4D.Folder { ; newName : Text } ) : 4D.File
| 引数 | 型 | 説明 | |
|---|---|---|---|
| destinationFolder | 4D.Folder | -> | 宛先フォルダー |
| newName | Text | -> | 移動先でのファイルの完全な名称 |
| 戻り値 | 4D.File | <- | 移動したファイル |
説明
.moveTo() 関数は、File オブジェクトを destinationFolder が指定する移行先へと移動すると同時に、newName を指定した場合は名称も変更します。
destinationFolder 引数が指定するフォルダーはディスク上に存在している必要があり、そうでない場合にはエラーが生成されます。
デフォルトでは、移動したファイルは元の名前を維持します。移動の際にファイル名を変更したい場合、新しい完全な名前を newName に渡します。新しい名前は命名規則に則っている必要があります (例: ":", "/", 等の文字を含んでいない、など)。 そうでない場合、エラーが返されます。
返されるオブジェクト
移動後の File オブジェクト。
例題
$DocFolder:=Folder(fk documents folder)
$myFile:=$DocFolder.file("Current/Infos.txt")
$myFile.moveTo($DocFolder.folder("Archives");"Infos_old.txt")
.name
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
.name : Text
説明
.name プロパティは、拡張子 (あれば) を含まないファイル名を返します。
このプロパティは 読み取り専用 です。
.open()
履歴
| リリース | 内容 |
|---|---|
| 19 R7 | 追加 |
.open( { mode : Text } ) : 4D.FileHandle
.open( { options : Object } ) : 4D.FileHandle
| 引数 | 型 | 説明 | |
|---|---|---|---|
| mode | Text | -> | 開くモード: "read", "write", "append" |
| options | Object | -> | 開くオプション |
| 戻り値 | 4D.FileHandle | <- | 新規の FileHandle オブジェクト |
説明
.open() 関数は、対象のファイルについて、指定のモード (mode) またはオプション (options) で新規の 4D.FileHandle オブジェクトを作成し、返します。 4D.FileHandle クラスの関数とプロパティを使用して、ファイルにコンテンツを書き込んだり読み取ったり、追加したりすることができます。
mode (text) 引数として、どのモードで FileHandle を開くかを指定します。
| mode | 説明 |
|---|---|
| "read" | (デフォルト) ファイルから値を読み取るための FileHandle を作成します。ディスク上にファイルが存在しない場合は、エラーが返されます。 "read" モードの FileHandle は、同じ File オブジェクトに対していくつでも開くことができます。 |
| "write" | ファイルに値を書き込むための FileHandle を作成します (書き込みはファイルの先頭から)。ディスク上にファイルが存在しない場合は、作成されます。 "write" モードの FileHandle は、同じ File オブジェクトに対して 1つのみ開くことができます。 |
| "append" | ファイルに値を書き込むための FileHandle を作成します (書き込みはファイルの最後から)。ディスク上にファイルが存在しない場合は、作成されます。 "append" モードの FileHandle は、同じ File オブジェクトに対して 1つのみ開くことができます。 |
mode の値は、文字の大小を区別します。
option (object) 引数を使って、以下のプロパティを通じて FileHandle にさらなるオプションを渡すことができます (これらのプロパティはその後、開かれた FileHandle オブジェクト から取得できます)。
| options | 型 | 説明 | デフォルト |
|---|---|---|---|
.mode | Text | 開くモード (上記の mode 参照) | "read" |
.charset | Text | ファイルの読み取りや書き込みに使用される文字セット。セットの標準名を使用します (たとえば、"ISO-8859-1" や "UTF-8") | "UTF-8" |
.breakModeRead | Text または Number | ファイルの読み取り時に使用される改行の処理モード (下記参照) | "native" または 1 |
.breakModeWrite | Text または Number | ファイルの書き込み時に使用される改行の処理モード (下記参照) | "native" または 1 |
この関数は、元の改行文字をすべて置き換えます。デフォルトではネイティブの区切り文字が使われますが、別の区切り文字を定義することも可能です。 .breakModeRead と .breakModeWrite は、改行文字に適用する処理を指定します。以下のいずれかの値を使用できます (テキストまたは数値):
| 改行モードの値 (テキスト) | 改行モードの値 (数値/定数) | 説明 |
|---|---|---|
| "native" | 1 (Document with native format) | (デフォルト) 改行は OS のネイティブフォーマットに変換されます。 macOS では LF (ラインフィード) に、Windows では CRLF (キャリッジリターン+ラインフィード) に変換されます。 |
| "crlf" | 2 (Document with CRLF) | 改行は Windows のデフォルトフォーマットである CRLF (キャリッジリターン+ラインフィード) へと変換されます。 |
| "cr" | 3 (Document with CR) | 改行はクラシック Mac OS のデフォルトフォーマットである CR (キャリッジリターン) へと変換されます。 |
| "lf" | 4 (Document with LF) | 改行は Unix および macOS のデフォルトフォーマットである LF (ラインフィード) へと変換されます。 |
break mode as text の値は、文字の大小を区別します。
例題
"ReadMe.txt" ファイルを読み取るための FileHandle を作成します:
var $f : 4D.File
var $fhandle : 4D.FileHandle
$f:=File("C:\\Documents\\Archives\\ReadMe.txt";fk platform path)
$fhandle:=$f.open("read")
.original
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
.original : 4D.File
.original : 4D.Folder
説明
.original プロパティは、エイリアス、ショートカット、シンボリックリンクファイルのターゲット要素を返します。ターゲット要素は以下のいずれかです:
- File オブジェクト
- Folder オブジェクト
エイリアスでないファイルについては、プロパティは同じファイルオブジェクトをファイルとして返します。
このプロパティは 読み取り専用 です。
.parent
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
.parent : 4D.Folder
説明
.parent プロパティは、対象ファイルの親フォルダーオブジェクトを返します。パスがシステムパスを表す場合 (例: "/DATA/")、システムパスが返されます。
このプロパティは 読み取り専用 です。
.path
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
.path : Text
説明
.path プロパティは、ファイルの POSIXパスを返します。パスがファイルシステムを表す場合 (例: "/DATA/")、ファイルシステムが返されます。
このプロパティは 読み取り専用 です。
.platformPath
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
.platformPath : Text
説明
.platformPath プロパティは、カレントプラットフォームのシンタックスで表現されたファイルのパスを返します。
このプロパティは 読み取り専用 です。
.rename()
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
.rename( newName : Text ) : 4D.File
| 引数 | 型 | 説明 | |
|---|---|---|---|
| newName | Text | -> | ファイルの新しい完全な名称 |
| 戻り値 | 4D.File | <- | 名称変更されたファイル |
説明
.rename() 関数は、ファイル名を newName に指定した名称に変更し、名称変更後の File オブジェクトを返します。
newName 引数は命名規則に則っている必要があります (例: ":", "/", 等の文字を含んでいない、など)。 そうでない場合、エラーが返されます。同じ名前のファイルがすでに存在する場合には、エラーが返されます。
この関数はファイルの完全な名前を編集することに留意が必要です。 つまり、newName に拡張子を渡さなかった場合、新しいファイル名には拡張子がありません。
返されるオブジェクト
名称変更された File オブジェクト。
例題
"ReadMe.txt" ファイルを "ReadMe_new.txt" というファイルに名称変更します:
$toRename:=File("C:\\Documents\\Archives\\ReadMe.txt";fk platform path)
$newName:=$toRename.rename($toRename.name+"_new"+$toRename.extension)
.setAppInfo()
履歴
| リリース | 内容 |
|---|---|
| 21 R2 | removeFluentUI のサポート |
| 20 R9 | macOS 実行ファイル内のUUID を読む |
| 20 | WinIcon をサポート |
| 19 | 追加 |
.setAppInfo( info : Object )
| 引数 | 型 | 説明 | |
|---|---|---|---|
| info | Object | -> | アプリケーションファイル情報内に書き込むプロパティ |
説明
.setAppInfo() 関数は、 info に渡したプロパティをアプリケーションファイルの情報として書き込みます。これは4D アプリケーションのビルドチェーンをカスタマイズしたいデベロッパーのために設計されています。
この関数は、以下のタイプに対してのみ使用可能です: .plist (全プラットフォーム)、存在する .exe / .dll (Windows)、あるいは macOS 実行ファイル。他のファイルタイプを使用した場合、あるいはディスク上にまだ存在しない**.exe**/.dll ファイルに対して使用した場合、関数は何もしません(エラーも生成されません)。
.plist ファイル用のinfo オブジェクト (全プラットフォーム)
この関数は xml形式の .plist ファイル (テキスト) のみをサポートしています。バイナリー形式の .plist ファイルを対象に使用した場合、エラーが返されます。
もし .plist ファイルがディスク上に既に存在する場合、それは更新されます。 そうでない場合には、作成されます。そうでない場合には、作成されます。
info オブジェクト引数内に設定されたそれぞれの有効なプロパティは、 .plist ファイル内にキーとして書き込まれます。あらゆるキーの名称が受け入れられます。値の型は可能な限り維持されます。
info 引数内に設定されたキーが.plist ファイル内に既に定義されていた場合には、元の型を保ったまま値が更新されます。 .plist ファイルに既存のそのほかのキーはそのまま維持されます。
日付型の値を定義するには、Xcode plist エディターのようにミリ秒を除いた ISO UTC 形式の JSONタイムスタンプ文字列 (例: "2003-02-01T01:02:03Z") を使用します。
.exe または .dll ファイル用のinfo オブジェクト(Windows のみ)
info オブジェクト引数内に設定されているそれぞれの有効なプロパティは、.exe あるいは .dll ファイルのバージョンリソースに書き込まれます。以下のプロパティが使用できます (それ以外のプロパティは無視されます):
| プロパティ | 型 | 説明 |
|---|---|---|
| CompanyName | Text | |
| FileDescription | Text | |
| FileVersion | Text | |
| InternalName | Text | |
| LegalCopyright | Text | |
| OriginalFilename | Text | |
| ProductName | Text | |
| ProductVersion | Text | |
| removeFluentUI | Boolean | これは組み込み4D アプリケーション(.exe ファイル) でのみ使用可能です。ここにTrue を渡すと、組み込みWindows App SDK (Fluent UI レンダリング を使用するには必須) を参照している manifest と .pri ファイルを、OS にインストールされているWindows App SDK の使用を許可するバージョンに置き換えます。ローカルのSDK を使用することで、生成されるアプリケーションのサイズを減らすことができます(ただしデフォルトの埋め込みファイルを削除する必要もあります)。 False を渡す、あるいはこのプロパティを省略した場合には、何も起こりません。 |
| WinIcon | Text | .icoファイルの Posixパス。このプロパティは、4D が生成した実行ファイルにのみ適用されます。 |
WinIcon を除き全てのプロパティにおいて、値としてnull または空の文字列を渡した場合、プロパティには空の文字列が書き込まれます。テキストでない型の値を渡した場合には、文字列に変換されます。
WinIcon プロパティにおいては、ファイルが存在しない、または不正なフォーマットだった場合にはエラーが生成されます。
macOS 実行ファイル用の info パラメーター(macOSのみ)
info オブジェクトは単一のarchs という名前のプロパティを持ち、そのコレクションの中にgetAppInfo() から返されるフォーマットのオブジェクトを格納していなければなりません。それぞれのオブジェクトには、少なくともtype および uuid プロパティが格納されている必要があります(name は使用されません)。
info.archs コレクション内のそれぞれのオブジェクトは、以下のプロパティを格納していなければなりません:
| プロパティ | 型 | 説明 |
|---|---|---|
| type | Number | 編集したいアーキテクチャーの数値識別子 |
| uuid | Text | 新しい実行ファイルUUIDのテキスト表現 |
例題 1
// info.plist ファイル内のキーを一部設定する(全プラットフォーム用)
var $infoPlistFile : 4D.File
var $info : Object
$infoPlistFile:=File("/RESOURCES/info.plist")
$info:=New object
$info.Copyright:="Copyright 4D 2023" //テキスト
$info.ProductVersion:=12 //整数
$info.ShipmentDate:="2023-04-22T06:00:00Z" //タイムスタンプ
$info.CFBundleIconFile:="myApp.icns" //macOS用
$infoPlistFile.setAppInfo($info)
例題 2
// .exe ファイルに対して著作権、バージョン、およびアイコンを設定する(Windows用)
var $exeFile; $iconFile : 4D.File
var $info : Object
$exeFile:=File(Application file; fk platform path)
$iconFile:=File("/RESOURCES/myApp.ico")
$info:=New object
$info.LegalCopyright:="Copyright 4D 2023"
$info.ProductVersion:="1.0.0"
$info.WinIcon:=$iconFile.path
$exeFile.setAppInfo($info)
例題 3
// アプリケーションのUUIDを再生成する (macOS)
// myApp UUIDを読み出す
var $app:=File("/Applications/myApp.app/Contents/MacOS/myApp")
var $info:=$app.getAppInfo()
// 全てのアーキテクチャー用にUUIDを再生成する
For each ($i; $info.archs)
$i.uuid:=Generate UUID
End for each
// 新しいUUID でアプリを更新する
$app.setAppInfo($info)
参照
.setContent()
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
.setContent ( content : Blob )
| 引数 | 型 | 説明 | |
|---|---|---|---|
| content | BLOB | -> | ファイルの新しいコンテンツ |
説明
.setContent() 関数は、content 引数の BLOB に保存されているデータを使用して、ファイルの全コンテンツを上書きします。 BLOB についての詳細は、BLOB の章を参照してください。
例題
$myFile:=Folder(fk documents folder).file("Archives/data.txt")
$myFile.setContent([aTable]aBlobField)
.setText()
履歴
| リリース | 内容 |
|---|---|
| 19 R3 | 新規プロジェクトのデフォルト: BOMなし、(macOS の場合) EOL として LF を使用 |
| 17 R5 | 追加 |
.setText ( text : Text {; charSetName : Text { ; breakMode : Integer } } )
.setText ( text : Text {; charSetNum : Integer { ; breakMode : Integer } } )
| 引数 | 型 | 説明 | |
|---|---|---|---|
| text | Text | -> | ファイルに保存するテキスト |
| charSetName | Text | -> | 文字セットの名前 |
| charSetNum | Integer | -> | 文字セットの番号 |
| breakMode | Integer | -> | 改行の処理モード |
説明
.setText() 関数は、text に渡されたテキストをファイルの新しいコンテンツとして書き込みます。
File オブジェクトで参照されているファイルがディスク上に存在しない場合、この関数がそのファイルを作成します。ディスク上にファイルが存在する場合、ファイルが開かれている場合を除き、以前のコンテンツは消去されます。 ファイルが開かれている場合はコンテンツはロックされ、エラーが生成されます。
text には、ファイルに書き込むテキストを渡します。テキストリテラル ("my text" など) のほか、4Dテキストフィールドや変数も渡せます。
任意で、コンテンツの書き込みに使用する文字セットを渡します。これには、次の二つの方法があります:
- charSetName に標準の文字セット名を含んだ文字列 ("ISO-8859-1" や "UTF-8" など) を渡します。
- charSetNum に標準の文字セット名の MIBEnum ID (倍長整数) を渡します。
4D によってサポートされている文字セットの一覧については、
CONVERT FROM TEXTコマンドを参照ください。
文字セットにバイトオーダーマーク (BOM) が存在し、かつその文字セットに "-no-bom" 接尾辞 (例: "UTF-8-no-bom") が含まれていない場合、4D は BOM をファイルに挿入します。文字セットを指定しない場合、 4D はデフォルトで "UTF-8" の文字セットを BOMなしで使用します。
breakMode には、ファイルを保存する前に改行文字に対して行う処理を指定する整数を渡します。 System Documents テーマ内にある、以下の定数を使用することができます:
| 定数 | 値 | 説明 |
|---|---|---|
Document unchanged | 0 | 何も処理をしません。 |
Document with native format | 1 | (デフォルト) 改行は OS のネイティブフォーマットに変換されます。 macOS では LF (ラインフィード) に、Windows では CRLF (キャリッジリターン+ラインフィード) に変換されます。 |
Document with CRLF | 2 | 改行は Windows のデフォルトフォーマットである CRLF (キャリッジリターン+ラインフィード) へと変換されます。 |
Document with CR | 3 | 改行はクラシック Mac OS のデフォルトフォーマットである CR (キャリッジリターン) へと変換されます。 |
Document with LF | 4 | 改行は Unix および macOS のデフォルトフォーマットである LF (ラインフィード) へと変換されます。 |
breakMode 引数を渡さなかった場合はデフォルトで、改行はネイティブモード (1) で処理されます。
互換性に関する注記: EOL (改行コード) および BOM の管理については、互換性オプションが利用可能です。詳細については、doc.4d.com 上の互換性ページを参照してください。
例題
$myFile:=File("C:\\Documents\\Hello.txt";fk platform path)
$myFile.setText("Hello world")
.size
履歴
| リリース | 内容 |
|---|---|
| 17 R5 | 追加 |
.size : Real
説明
.size プロパティは、ファイルのサイズ (バイト単位) を返します。ファイルがディスク上に存在しない場合、サイズは 0 になります。
このプロパティは 読み取り専用 です。