GeneXus には、Directory や File など、ファイルシステムで直接操作できる特殊なデータタイプがあります。しかし、Apple や Android のスマートデバイスでは、アプリケーションが直接扱うことのできるディレクトリーに関していくつかの制限があります。
Directory データタイプには、開発者がスマートデバイスおよび Web/Win アプリケーションでファイルシステムを操作するのに役立つ、3 つの静的な読み取り専用プロパティがあります。
アプリケーションに関連するファイルのディレクトリーが保存されています。
iOS のオフラインアプリケーションの場合、このパスはアプリケーション内の “Documents” フォルダと一致します。
Android のオフラインアプリケーションの場合、このパスはアプリケーションの “Private Storage” フォルダと一致します。
その他のジェネレーター (Web または Win) の場合、このパスは “%USERPROFILE%” ディレクトリーと一致します。
アプリケーションの一時ファイルが保存されているディレクトリーです。
iOS や Android のオフラインアプリケーションの場合、このディレクトリーのファイルとフォルダは、オペレーティングシステムによって削除される可能性があります。また、開発者にとっては、これらのファイルまたはディレクトリーが正常に削除されたかどうかの確認が重要です。
その他のジェネレーター (Web または Win) の場合、このパスは “%TEMP%” ディレクトリーと一致します。
外部ストレージデバイスのパスの場合、存在するかどうかにかかわらず、このプロパティには、"ApplicationDataPath" プロパティの値があります。
iOS には外部ストレージデバイスがないため、このプロパティは "ApplicationDataPath" プロパティと同じ値を保持しています。Android も外部ストレージデバイスがないため、同様です。
アプリケーションのキャッシュが格納されているディレクトリーを示します。
iOS ではアプリケーションの Library\Caches ディレクトリーに対応します。キャッシュディレクトリーに保存されたデータは、オペレーティングシステムによって任意のタイミングで削除できますが、アプリケーションのいくつかの実行を介してデータが保持されることもあります。
注:
この機能は GeneXus 16 Upgrade 3 以降のジェネレーターで、iOS でのみ利用できます。
これらすべてのプロパティは、パスの終端にファイルの区切り文字を含んでいません。そのため、開発者は File データタイプの Separator メソッドを使用して区切り文字を含める必要があります。
オンラインアーキテクチャのスマート デバイス アプリケーションでは、Start、Refresh、および Load イベントをサーバー側で実行します。したがって、これらのイベントがプロパティを使用する場合は、前述のとおり、サーバーのプロパティの値が使用されます。詳しくは、「スマートデバイスのサーバー側のイベント」を参照してください。
特定のパスが相対的である場合、既定のディレクトリーは “Directory.ApplicationDataPath” となります。
したがって、コードの行は次のようになります:
&file.Source = "someFile.txt"
これは、次のコードと同じです:
&file.Source = Directory.ApplicationDataPath + &file.Separator + "someFile.txt"
Android のスマートデバイスでは、絶対パスがサポートされ、常に “/” の文字から始まります。例:
&file.Source = "/sdcard/image.jpg"
iOS のスマートデバイスでは、プラットフォームによって絶対パスがサポートされていません。
iOS の場合、“$RESOURCES” と呼ばれる変数パスを使用して、ナレッジベースの画像が保存されているディレクトリーにアクセスすることができます。たとえば、ナレッジベースに “MyImage.png” という名前の画像がある場合、その画像を使用するためにコードのスタブを使用することができます:
&file.Source = "$RESOURCES/MyImage.png"
&destPath = Directory.TemporaryFilesPath + &file.Separator + "MyImageCopy.png"
&file.Copy(&destPath)
これらのプロパティは、GeneXus X Evolution 3 以降で使用可能です。
|