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

File

File オブジェクトは File コマンドによって作成されます。 これらのオブジェクトには、(実在しているか否かに関わらず) ディスクファイルへの参照が格納されます。 たとえば、新規ファイルを作成するために File コマンドを実行した場合、有効な File オブジェクトが作成されますが、file.create() 関数を呼び出すまで、ディスク上にはなにも保存されていません。

例題

プロジェクトフォルダーにプリファレンスファイルを作成します:

var $created : Boolean
$created:=File("/PACKAGE/SpecialPrefs/"+Current user+".myPrefs").create()

パス名

File オブジェクトは、filesystemsposix シンタックスを含む、いくつかのパス名をサポートしています。 使用できるパス名についての詳細は パス名 ページを参照ください。

File オブジェクト

.copyTo( destinationFolder : 4D.Folder { ; newName : Text } { ; overwrite : Integer } ) : 4D.File
File オブジェクトを、destinationFolder 引数で指定したフォルダーへとコピーします
.create() : Boolean
File オブジェクトのプロパティに基づいてディスク上にファイルを作成します
.createAlias( destinationFolder : 4D.Folder ; aliasName : Text { ; aliasType : Integer } ) : 4D.File
エイリアス (macOS) またはショートカット (Windows) を作成します
.creationDate : Date
ファイルの作成日
.creationTime : Time
ファイルの作成時刻
.delete()
ファイルを削除します
.exists : Boolean
ディスク上にファイルが存在する場合は true を返します
.extension : Text
ファイル名の拡張子
.fullName : Text
拡張子 (あれば) を含めたファイルの完全な名称
.getAppInfo() : Object
.exe.dll.plist ファイルの情報をオブジェクトとして返します
.getContent( ) : 4D.Blobファイルの全コンテンツを格納した 4D.Blob オブジェクトを返します
.getIcon( { size : Integer } ) : Picture
ファイルのアイコンを返します
.getText( { charSetName : Text { ; breakMode : Integer } } ) : Text
.getText( { charSetNum : Integer { ; breakMode : Integer } } ) : Text

ファイルのコンテンツをテキストとして返します
.hidden : Boolean
ファイルがシステムレベルで "非表示" に設定されていれば true
.isAlias : Boolean
ファイルがエイリアス、ショートカット、シンボリックリンクのいずれかである場合には true
.isFile : Boolean
ファイルに対しては常に true
.isFolder : Boolean
ファイルに対しては常に false
.isWritable : Boolean
ファイルがディスク上に存在し、書き込み可能な場合に true
.modificationDate : Date
ファイルの最終変更日
.modificationTime : Time
ファイルの最終変更時刻
.moveTo( destinationFolder : 4D.Folder { ; newName : Text } ) : 4D.File
File オブジェクトを destinationFolder が指定する移行先へと移動すると同時に、newName を指定した場合は名称も変更します
.name : Text
拡張子 (あれば) を含まないファイル名
.open( { mode : Text } ) : 4D.FileHandle
.open( { options : Object } ) : 4D.FileHandle

対象のファイルについて、指定のモード (mode) またはオプション (options) で新規の 4D.FileHandle オブジェクトを作成し、返します
.original : 4D.File
.original : 4D.Folder

エイリアス、ショートカット、シンボリックリンクファイルのターゲット要素
.parent : 4D.Folder
対象ファイルの親フォルダーオブジェクト
.path : Text
ファイルの POSIXパス
.platformPath : Text
カレントプラットフォームのシンタックスで表現されたファイルのパス
.rename( newName : Text ) : 4D.File
ファイル名を newName に指定した名称に変更し、名称変更後の File オブジェクトを返します
.setAppInfo( info : Object )
info に渡したプロパティを .exe.dll.plist ファイルの情報として書き込みます
.setContent ( content : Blob )
content 引数の BLOB に保存されているデータを使用して、ファイルの全コンテンツを上書きします
.setText ( text : Text {; charSetName : Text { ; breakMode : Integer } } )
.setText ( text : Text {; charSetNum : Integer { ; breakMode : Integer } } )

text に渡されたテキストをファイルの新しいコンテンツとして書き込みます
.size : Real
ファイルのサイズ (バイト単位)

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

引数説明
destinationFolder4D.Folder->宛先フォルダー
newNameテキスト->コピー先フォルダーの名前
overwrite整数->既存要素を上書きするには fk overwrite を渡します
戻り値4D.File<-コピーされたファイル

説明

.copyTo() 関数は、File オブジェクトを、destinationFolder 引数で指定したフォルダーへとコピーします。

destinationFolder 引数が指定するフォルダーはディスク上に存在している必要があり、そうでない場合にはエラーが生成されます。

デフォルトで、ファイルは元の名前を維持したままコピーされます。 コピーの際にフォルダー名を変更したい場合、新しい名前を newName に渡します。 新しい名前は命名規則に則っている必要があります (例: ":", "/", 等の文字を含んでいない、など)。そうでない場合、エラーが返されます。

destinationFolder 引数が指定するフォルダー内に同じ名前のファイルが既に存在する場合、4D はデフォルトでエラーを生成します。 overwritefk overwrite 定数を渡すことで、既存のフォルダーを無視して上書きすることができます:

定数説明
fk overwrite4既存要素があれば、それを上書きします

戻り値

コピーされた 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

引数説明
戻り値ブール<-ファイルが正常に作成された場合に 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

引数説明
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 オブジェクトを返します。

例題

データベースフォルダー内のファイルへのエイリアスを作成します:

 $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上では、エラーは生成されず、ファイルが削除されます。
caution

.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

引数説明
戻り値オブジェクト<-.exe/.dll のバージョンリソースや .plist ファイルの中身

説明

.getAppInfo() 関数は、.exe.dll.plist ファイルの情報をオブジェクトとして返します。

この関数は、既存の .exe、.dll、あるいは .plist ファイルと使う必要があります。 ファイルがディスク上に存在しない、または、有効な .exe や .dll、.plist ファイルでない場合、この関数は空のオブジェクトを返します (エラーは生成されません)。

この関数は xml形式の .plist ファイル (テキスト) のみをサポートしています。 バイナリ形式の .plist ファイルを対象に使用した場合、エラーが返されます。

.exe または .dll ファイルの場合に返されるオブジェクト

.exe および .dll ファイルの読み取りは Windows上でのみ可能です。

プロパティ値はすべてテキストです。

プロパティ
InternalNameテキスト
ProductNameテキスト
CompanyNameテキスト
LegalCopyrightテキスト
ProductVersionテキスト
FileDescriptionテキスト
FileVersionテキスト
OriginalFilenameテキスト

.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)

参照

.setAppInfo()

.getContent()

履歴
リリース内容
19 R24D.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整数->取得するピクチャーの一辺の長さ (ピクセル単位)
戻り値ピクチャー<-アイコン

説明

.getIcon() 関数は、ファイルのアイコンを返します。

任意の size 引数を渡すと、返されるアイコンのサイズをピクセル単位で指定することができます。 この値は、実際にはアイコンを格納している正方形の一辺の長さを表しています。 アイコンは通常、32x32ピクセル ("大きいアイコン") または 16x16ピクセル ("小さいアイコン") で定義されています。 この引数に 0 を渡すか省略した場合、"大きいアイコン" が返されます。

ファイルがディスク上に存在しない場合、デフォルトの空のアイコンが返されます。

戻り値

ファイルアイコンの ピクチャー

.getText()

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

.getText( { charSetName : Text { ; breakMode : Integer } } ) : Text
.getText( { charSetNum : Integer { ; breakMode : Integer } } ) : Text

引数説明
charSetNameテキスト->文字セットの名前
charSetNum整数->文字セットの番号
breakMode整数->改行の処理モード
戻り値テキスト<-ドキュメントから取得したテキスト

説明

.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 unchanged0何も処理をしません。
Document with native format1(デフォルト) 改行は OS のネイティブフォーマットに変換されます。macOS では CR (キャリッジリターン) に、Windows では CRLF (キャリッジリターン+ラインフィード) に変換されます。
Document with CRLF2改行は Windowsフォーマット (CRLF、キャリッジリターン+ラインフィード) へと変換されます。
Document with CR3改行は macOSフォーマット (CR、キャリッジリターン) へと変換されます。
Document with LF4改行は 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

引数説明
destinationFolder4D.Folder->宛先フォルダー
newNameテキスト->移動先でのファイルの完全な名称
戻り値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テキスト->開くモード: "read", "write", "append"
optionsオブジェクト->開くオプション
戻り値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 オブジェクト から取得できます)。

オプション説明デフォルト
.modeテキスト開くモード (上記の mode 参照)"read"
.charsetテキストファイルの読み取りや書き込みに使用される文字セット。 セットの標準名を使用します (たとえば、"ISO-8859-1" や "UTF-8")"UTF-8"
.breakModeReadText または Numberファイルの読み取り時に使用される改行の処理モード (下記参照)"native" または 1
.breakModeWriteText または 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テキスト->ファイルの新しい完全な名称
戻り値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()

履歴
リリース内容
20WinIcon をサポート
19追加

.setAppInfo( info : Object )

引数説明
infoオブジェクト->.exe/.dll のバージョンリソースや .plist ファイルに書き込むプロパティ

説明

.setAppInfo() 関数は、info に渡したプロパティを .exe.dll.plist ファイルの情報として書き込みます。

この関数は、既存の .exe、.dll、あるいは .plist ファイルと使う必要があります。 ファイルがディスク上に存在しない、または、有効な .exe や .dll、.plist ファイルでない場合、この関数は何もしません (エラーは生成されません)。

この関数は xml形式の .plist ファイル (テキスト) のみをサポートしています。 バイナリ形式の .plist ファイルを対象に使用した場合、エラーが返されます。

.exe または .dll ファイル用の info オブジェクト

.exe および .dll ファイル情報の書き込みは Windows上でのみ可能です。

info オブジェクトに設定された各プロパティは .exe または .dll ファイルのバージョンリソースに書き込まれます。 以下のプロパティが使用できます (それ以外のプロパティは無視されます):

プロパティ説明
InternalNameテキスト
ProductNameテキスト
CompanyNameテキスト
LegalCopyrightテキスト
ProductVersionテキスト
FileDescriptionテキスト
FileVersionテキスト
OriginalFilenameテキスト
WinIconテキスト.icoファイルの Posixパス。 このプロパティは、4D が生成した実行ファイルにのみ適用されます。

WinIcon を除くすべてのプロパティにおいて、値として null または空テキストを渡すと、空の文字列がプロパティに書き込まれます。 テキストでない型の値を渡した場合には、文字列に変換されます。

WinIcon プロパティにおいては、アイコンファイルが存在しないか、フォーマットが正しくない場合、エラーが発生します。

.plist ファイル用の info オブジェクト

info オブジェクトに設定された各プロパティは .plist ファイルにキーとして書き込まれます。 あらゆるキーの名称が受け入れられます。 値の型は可能な限り維持されます。

info に設定されたキーが .plist ファイル内ですでに定義されている場合は、その値が更新され、元の型が維持されます。 .plist ファイルに既存のそのほかのキーはそのまま維持されます。

日付型の値を定義するには、Xcode plist エディターのようにミリ秒を除いた ISO UTC 形式の JSONタイムスタンプ文字列 (例: "2003-02-01T01:02:03Z") を使用します。

例題

  // .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)
  // 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)

参照

.getAppInfo()

.setContent()

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

.setContent ( content : Blob )

引数説明
contentBLOB->ファイルの新しいコンテンツ

説明

.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 } } )

引数説明
テキストテキスト->ファイルに保存するテキスト
charSetNameテキスト->文字セットの名前
charSetNum整数->文字セットの番号
breakMode整数->改行の処理モード

説明

.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 unchanged0何も処理をしません。
Document with native format1(デフォルト) 改行は OS のネイティブフォーマットに変換されます。 macOS では LF (ラインフィード) に、Windows では CRLF (キャリッジリターン+ラインフィード) に変換されます。
Document with CRLF2改行は Windows のデフォルトフォーマットである CRLF (キャリッジリターン+ラインフィード) へと変換されます。
Document with CR3改行はクラシック Mac OS のデフォルトフォーマットである CR (キャリッジリターン) へと変換されます。
Document with LF4改行は 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 になります。

このプロパティは 読み取り専用 です。