File
File
オブジェクトは File
コマンドによって作成されます。 これらのオブジェクトには、(実在しているか否かに関わらず) ディスクファイルへの参照が格納されます。 たとえば、新規ファイルを作成するために File
コマンドを実行した場合、有効な File
オブジェクトが作成されますが、file.create()
関数を呼び出すまで、ディスク上にはなにも保存されていません。
例題
プロジェクトフォルダーにプリファレンスファイルを作成します:
var $created : Boolean
$created:=File("/PACKAGE/SpecialPrefs/"+Current user+".myPrefs").create()
パス名
File
オブジェクトは、filesystems
や posix
シンタックスを含む、いくつかのパス名をサポートしています。 使用できるパス名についての詳細は パス名 ページを参照ください。
File オブジェクト
File
履歴
リリース | 内容 |
---|---|
17 R5 | 追加 |
File ( path : Text { ; pathType : Integer }{ ; * } ) : 4D.File
File ( fileConstant : Integer { ; * } ) : 4D.File
引数 | 型 | 説明 | |
---|---|---|---|
path | Text | -> | ファイルパス |
fileConstant | Integer | -> | 4Dファイル定数 |
pathType | Integer | -> | fk posix path (デフォルト) または fk platform path |
* | -> | ホストデータベースのファイルを返すには * を渡します | |
戻り値 | 4D.File | <- | 新規ファイルオブジェクト |
|
説明
File
コマンドは、 4D.File
型の新しいオブジェクトを作成して返します. このコマンドは 2種類のシンタックスを受け入れます。
File ( path { ; pathType } { ; * })
path には、ファイルパス文字列を渡します。 カスタムの文字列やファイルシステム (例: "/DATA/myfile.txt") を渡すことができます。
File
コマンドでは絶対パス名のみがサポートされます。
デフォルトで、4D は POSIXシンタックスで表現されたパスを期待します。 プラ ットフォームパス名 (Windows または macOS) を使用する場合、pathType 引数を使用してそのことを宣言する必要があります。 以下の定数を使用することができます:
定数 | 値 | 説明 |
---|---|---|
fk platform path | 1 | プラットフォーム特有のシンタックスで表現されたパス (プラットフォームパス名の場合には必須) |
fk posix path | 0 | POSIXシンタックスで表現されたパス (デフォルト) |
File ( fileConstant { ; * } )
fileConstant には、以下の定数のどれか一つを指定して 4Dビルトインの、またはシステムファイルを渡します:
定数 | 値 | 説明 |
---|---|---|
Backup history file | 19 | バックアップ履歴ファイル。 バックアップ保存先フォルダに保存されています。 |
Backup log file | 13 | カレントのバックアップのログファイル。 アプリケーションの Logs フォルダーに保存されています。 |
Backup settings file | 1 | プロジェクトの Settings フォルダーにある、デフォルトの backup.4DSettings ファイル (xml 形式) |
Backup settings file for data | 17 | データフォルダーの Settings フォルダーにある、データファイル用の backup.4DSettings ファイル (xml 形式) |
Build application log file | 14 | アプリケーションビルダーのカレントログファイル (xml 形式)。 Logs フォルダーに保存されています。 |
Build application settings file | 20 | アプリケーションビルダーのデフォルト設定ファイル ("buildApp.4DSettings")。 プロジェクトの Settings フォルダーに保存されています。 |
Compacting log file | 6 | Compact data file コマンドによって、あるいはメンテナンス&セキュリティセンター (MSC) によって作成された、直近の圧縮のログファイル。 Logs フォルダーに保存されています。 |
Current backup settings file | 18 | アプリケーションが現在使用している backup.4DSettings ファイル。 使用されるのはデフォルトのバックアップ設定ファイル、または、データファイル用のユーザーバックアップ設定ファイルです。 |
Debug log file | 12 | SET DATABASE PARAMETER(Debug log recording) コマンドによって作成されたログファイル。 Logs フォルダーに保存されています。 |
Diagnostic log file | 11 | SET DATABASE PARAMETER(Diagnostic log recording) コマンドによって作成されたログファイル。 Logs フォルダーに保存されています。 |
Directory file | 16 | プロジェクトアプリケーションにおいて、ユーザーとグループ (あれば) の定義が格納された directory.json ファイル。 このファイルは、データベースの user settings フォルダー (デフォルト、プロジェクトに対してグローバル)、または data settings フォルダー (データファイル専用) に保管されます。 |
HTTP debug log file | 9 | WEB SET OPTION(Web debug log) コマンドによって作成されたログファイル。 Logs フォルダーに保存されています。 |
HTTP log file | 8 | WEB SET OPTION(Web log recording) コマンドによって作成され たログファイル。 Logs フォルダーに保存されています。 |
IMAP Log file | 23 | SET DATABASE PARAMETER(IMAP Log) コマンドによって作成されたログファイル。 Logs フォルダーに保存されています。 |
Last backup file | 2 | 任意の場所に格納されている、最終バックアップファイル (名称は: <applicationName>[bkpNum].4BK ) |
Last journal integration log file | 22 | 最後のログ統合ログファイル (あれば) の完全なパス名 (復元されたアプリケーションの Logs フォルダー内に保存されます)。 このファイルは、自動修復モードにおいてログファイル統合が発生した時点で作成されます。 |
Repair log file | 7 | メンテナンス&セキュリティセンター (MSC) 内からデータベースに対しておこなわれたデータベース修復のログファイル。 Logs フォルダーに保存されています。 |
Request log file | 10 | SET DATABASE PARAMETER(4D Server log recording) あるいは SET DATABASE PARAMETER(Client log recording) コマンドによって作成された標準のクライアント/サーバーログファイル (Webリクエストは除外)。 サーバー上で実行された場合には、サーバーログが返されます (ログファイルはサーバー上の Logsフォルダーに保存されています)。 クライアントで実行された場合には、クライアントのログが返されます (ログファイルはクライアントのLogsフォルダーに保存されています)。 |
SMTP log file | 15 | SET DATABASE PARAMETER(SMTP Log) コマンドによって作成されたログファイル。 Logs フォルダーに保存されています。 |
User settings file | 3 | 設定が有効化されている場合、ストラクチャーファイルと同じ階層にある Preferences フォルダーに格納された、全データファイルの settings.4DSettings ファイル。 |
User settings file for data | 4 | データファイルと同じ階層にある Preferences フォルダーに格納された、カレントデータファイルの settings.4DSettings ファイル。 |
Verification log file | 5 | VERIFY CURRENT DATA FILE および VERIFY DATA FILE コマンドによって、あるいはメンテナンス&セキュリティセンター (MSC) によって作成されたログファイル。 Logs フォルダーに保存されています。 |
fileConstant 引数で指定したファイルが存在しない場合、null オブジェクトが返されます。 エラーは生成されません。
コマンドがコンポーネントから呼び出されている場合、*
引数を渡してホストデータベースのパスを取得するようにします。 *
引数を省略すると、常に null オブジェクトが返されます。
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()
関数は、 エイリアス (macOS) またはショートカット (Windows) を作成します 。これらは、destinationFolder オブジェクトが指定するフォルダー内に、aliasName の名称で作成されます。
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
プロパティは、 ファイルの作成日を返します.
このプロパティは 読み取り専用 です。
.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()
履歴
リリース | 内容 |
---|---|
19 | 追加 |
.getAppInfo() : Object
引数 | 型 | 説明 | |
---|---|---|---|
戻り値 | Object | <- | .exe/.dll のバージョンリソースや .plist ファイルの中身 |
|
説明
.getAppInfo()
関数は、 .exe や .dll、.plist ファイルの情報をオブジェクトとして返します.
この関数は、既存の .exe、.dll、あるいは .plist ファイルと使う必要があります。 ファイルがディスク上に存在しない、または、有効な .exe や .dll、.plist ファイルでない場合、この関数は空のオブジェクトを返します (エラーは生成されません)。
この関数は xml形式の .plist ファイル (テキスト) のみをサポートしています。 バイナリ形式の .plist ファイルを対象に使用した場合、エラーが返されます。
.exe または .dll ファイルの場合に返されるオブジェクト
.exe および .dll ファイルの読み取りは Windows上でのみ可能です。
プロパティ値はすべてテキストです。
プロパティ | 型 |
---|---|
InternalName | Text |
ProductName | Text |
|CompanyName|Text| |LegalCopyright|Text| |ProductVersion|Text| |FileDescription|Text| |FileVersion|Text| |OriginalFilename|Text|
.plist ファイルの場合に返されるオブジェクト
xml ファイルの中身は解析され、オブジェクトのプロパティとしてキーが返されます。 キーの型 (テキスト、ブール、数値) は維持されます。 .plist dict
は JSON オブジェクトとして返されます。 また、.plist array
は JSON 配列として返されます。
例題
// アプリケーションの .exe ファイルの著作権情報を表示します (Windows)
var $exeFile : 4D.File
var $info : Object
$exeFile:=File(Application file; fk platform path)
$info:=$exeFile.getAppInfo()
ALERT($info.LegalCopyright)
// info.plistの著作権情報を表示します (Windows および macOS)
var $infoPlistFile : 4D.File
var $info : Object
$infoPlistFile:=File("/RESOURCES/info.plist")
$info:=$infoPlistFile.getAppInfo()
ALERT($info.Copyright)
参照
.getContent()
履歴
リリース | 内容 |
---|---|
17 R5 | 追加 |
.getContent( ) : Blob
引数 | 型 | 説明 | |
---|---|---|---|
戻り値 | BLOB | <- | ファイルのコンテンツ |
|
説明
.getContent()
関数は、 ファイルの全コンテンツを格納した BLOB
を返します. BLOB についての詳細は、BLOB の章を参照してください。
戻り値
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" テーマの、以下の定数を使用することができます:
定数 | 値 | 説明 |
---|---|---|
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) です。