ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com

ホーム

 
4D v19.8
ファイルおよびフォルダオブジェクトパス名

ファイルおよびフォルダオブジェクトパス名  


 

概要  

このテーマのコマンド、メソッド、およびプロパティを使用することで、ファイルおよびフォルダをオブジェクトとして扱うことができるようになります。これによってファイルとフォルダの管理がより強力にかつ柔軟に行えるようになります。例えば、カレントユーザーのドキュメントフォルダに新規ファイルを作成したい場合、以下のように書くだけで済みます:

 $new:=Folder(fk documents folder).file("Archives/John4D.prefs").create()

これに加えて、ファイルおよびフォルダオブジェクトはfileSystems をサポートし、これによってメインのアプリケーションフォルダへのコンテキストに沿ったパスが提供されます。

4D は、macOS およびWindows 上で様々な位置にある特定の4D フォルダを指定する、複数の"filesystem" パス名を受け取ります。filesystemパス名は主に二つ理由から有用です:

  • 独立性: あるソリューションを、一つの場所から他の場所へと、OS を気にすることやパスについて心配することなく移すことができるようになります。
  • 安全性: どんなコードも、ディスク上のファイルシステムのルートより上にある要素へとアクセスすることはできません(サンドボックス)。

以下のfilesystem パス名はサポートされます: 

filesystem指定先
"/RESOURCES"カレントのデータベースのResources フォルダ
"/DATA"カレントのデータフォルダ
"/PACKAGE"データベースフォルダ(4dbase 拡張子付き/なし)
"/LOGS"データベースのLogsフォルダ

注: 一部の場合においては、カレントのデータベースResources フォルダは"/SOURCES" で指定でき、またデータベースフォルダを"/PROJECT" で指定できることがあります。実際のfilesystem ターゲットは変更しません。

POSIX シンタックスは全てのプラットフォームでサポートされています。最も柔軟性に優れるため、POSIX シンタックスは推奨されています。POISX シンタックスはデフォルトで使用されています(file.path およびfolder.path プロパティによって返されます)。

このシンタックスでは:

  • フォルダは"/" で区切られます。
  • 絶対パス名は"/" で始まります。
  • 相対パスにおいて1階層上に上がるためには、パス名の前に"../" を使用します(セキュリティ上の理由から、filesystemより上に移動することはできません)。

POSIX シンタックスでは、一般的にはFile および Folder コマンドに対して"filesystem" パス名を使用します。例:

 $pathFile:=File("/DATA/Archives/file 2.txt")
 $pathFolder:=Folder("/RESOURCES/Pictures")

プラットフォーム特有のシンタックスは、コマンドが実行されるOS に依存します。このシンタックスを使用してファイルまたはフォルダオブジェクトを作成するとき、fk platform path 定数を引数として使用してそれを宣言する必要がある点に注意してください。 

Windows
以下のパターンがサポートされます:

  • フォルダは"\" で区切られます。
  • テキストは、2番目と3番目の文字にそれぞれ':' および '\' を含みます。
  • テキストは"\\" で始まります。

Folder を使用した例:

 $myFolder:=Folder("C:\\Monday";fk platform path).create()
 $myFolder:=Folder("\\\\svr-internal\\tempo";fk platform path).create()

注: 二つの"\\" についての情報については、Windowsのパス名の入力とエスケープシーケンス の段落を参照してください。

macOS
以下のパターンがサポートされます(HFS + シンタックス):

  • フォルダは":" で区切られます。
  • パスは":" で始まってはいけません。

Folder を使用した例:

 $myFolder:=Folder("macintosh hd:";fk platform path).create()
 $myFolder:=Folder("Monday:Tuesday";fk platform path).create() // ボリュームの名前はMonday である必要があります

File および Folder コンストラクター
File および Folder コマンドは絶対パス名のみを受け付けます。相対パス名はサポートされておらず、エラーが返されます。例えば、以下のコードを使用することはできません:

  //ERROR
 $myFolder:=Folder("myFolder").create() // コンストラクターで相対パス名を使用している

ファイルやフォルダを様々な場所(データベースフォルダ内、システムフォルダ内、など)で扱いたい場合は、filesystems を使用してください(上記参照)。例えば、次のように書くことができます:

 $myFolder:=Folder("/PACKAGE";"myFolder").create() // .4db レベルで作成したフォルダ
 $myFile:=File("/DATA/Prefs/tempo.txt").create() // データフォルダ内で作成したファイル

.file() および .folder() フォルダメソッド
folder.file( ) および folder.folder( ) などのfile  および folder オブジェクトのメソッドは、相対POSIX パス名を期待します。例えば:

  // ユーザードキュメントフォルダ内にある"Picture" フォルダを参照したい場合
 $userImages:=Folder(fk documents folder).folder("Pictures")
  //デスクトップにフォルダを作成したい場合
 $myFolder2:=Folder(fk desktop folder).folder("myFolder").create()

絶対パス名はサポートされておらず、エラーを返します。

例題  

このテーマのコマンドとメソッドの柔軟性と、オブジェクト記法が組み合わさると、以下の例題のように様々な方法でファイルやフォルダを管理することが可能にあります:

 $f:=Folder(fk desktop folder).folder("archive/jan2019")
 
 $f2:=Folder("/DATA/archive/jan2019").file("total.txt")
 
 $f3:=Folder("/DATA/archive/jan2019")
 
 $f4:=File("/DATA/info.txt")
 
 $f5:=File("c:\\archives\\local\\jan2019.txt";fk platform path)
 
 $f6:=File(fk backup log file)

 
プロパティ 

プロダクト: 4D
テーマ: ファイルとフォルダ

 
ページの目次 
 
履歴 

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v19)
ランゲージリファレンス ( 4D v19.1)
ランゲージリファレンス ( 4D v19.4)
ランゲージリファレンス ( 4D v19.5)
ランゲージリファレンス ( 4D v19.6)
ランゲージリファレンス ( 4D v19.7)
ランゲージリファレンス ( 4D v19.8)