他のファイル・システムのリソースでの作業

IResource 階層のほとんどの API は、リソースが保管されるファイル・システムの種類に関係なく、同じように機能します。ただし、他のファイル・システムのリソースで作業する場合、一部の特定の API は回避する必要があります。これは、これらがローカル・ファイル・システムでのみ使用するように設計されているためです。

特に、IResource.getLocation メソッドは、リソースのローカル・ファイル・システム・パスを戻すように指定されています。リソースが他のファイル・システムにある場合、このメソッドは適用されず、null を戻します。代わりに、リソースが保管されるファイル・システムの種類に関係なく機能する getLocationURI メソッドを使用することをお勧めします。

同様に、 IProjectDescription getLocation および setLocation メソッドも、ローカル・ファイル・システムでのみ有効なため、回避する必要があります。代わりに URI ベースのロケーション・メソッドを使用する必要があります。

ローカル・キャッシング

ローカル・ファイル・システム以外のリソースで作業をしていて、実際にはローカル・ファイルが必要になったとします。例えば、java.io.File と依存関係にあるライブラリーを使用している場合があります。この場合、 IFileStore.toLocalFile メソッドを使用して、ファイルのローカル・コピーを取得することができます。これにより、ディレクトリー・ツリー全体ではなく、1 つのファイルまたはディレクトリーのみがローカルでキャッシュされることに注意してください。以下に、ローカル・キャッシングを使用して IFileStore 上で Zip ファイルを開く例を示します。

   IFileStore store = ...;//some file store
   java.io.File file = store.toLocalFile(EFS.NONE, null);
   if (file == null) {
      //we are not a local file store, so we need to cache a local copy
      file = store.toLocalFile(EFS.CACHE, null);
   }
   java.util.zip.ZipFile zip = new java.util.ZipFile(file);

他のファイル・システムへのリンク

リンクされたリソースを使用して、複数のファイル・システムのリソースを一緒にドローするプロジェクトを作成できます。単純に、メソッド IFile.createLink(URI, int, IProgressMonitor) または IFolder.createLink(URI, int, IProgressMonitor) を使用して、コンテンツが任意のファイル・システム内の別のロケーションに保管されている既存プロジェクトにリソースを作成できます。また、他のリンクされたリソースの下にリンクを作成して、多くのさまざまなファイル・システムからドローする任意のリソース・ツリーを作成することもできます。以下は、ソースと同じファイル・システム・ロケーションを共用する、リンクされた兄弟ファイルを作成するシンプルな例です。

   IFile source = ...;//some source file
   IFile link = source.getParent().getFile(new Path(source.getName() + ".link"));
   link.createLink(source.getLocationURI(), IResource.NONE, null);