Editionをインストールする。関連リンクプラグインからEclipseのワークスペース上のリソースを操作する方法をまとめます。†Eclipseのワークスペース関連のAPIはワークスペース全体を表すorg.eclipse.core.resources.IWorkspaceRoot?その下の各プロジェクトorg.eclipse.core.resources.IProjectプロジェクト内のリソースorg.eclipse.core.resources.IResourceのような構成となっています。これらへの参照を取得して、そのオブジェクトのメソッドを呼び出してワークスペースを操作するわけですね。あ、これらのAPIを使用するにはorg.eclipse.core.resourcesを依存関係に追加してください。workspace.getRoot();これでワークスペースへの参照を取得することができます。各プロジェクトへの参照を取得することができます。root.getProjects();これで現在起動しているワークスペース内のプロジェクトを配列で取得することできました。root.getProject([プロジェクト名の文字列]);などとしてプロジェクト名指定で参照を取得することもできます。先のメソッドでプロジェクトを取得することができましたが、プロジェクトを作成するには以下のようにします。ように例外が発生するため、存在チェックをしています。monitor)メソッドは時間がかかる場合があるため、引数にIProgressMonitor?を取ります。ここではとりあえずnullを渡してますが。†プロジェクト内のリソースはすべてorg.eclipse.core.resources.IResourceというインタフェース(とそのサブインタフェース)を実装しています。以下のような構成ですね。}});などとすることで取得できます。これはVisitorパタンになっていて、プロジェクト内のツリーを走査していきます。走査したときにvisitメソッドが呼ばれるので、引数のresourceから情報を取り出せばよいわけですね。このIResource#getType()を使って型のタイプを取得することができます。0x8;などがあるみたいですね。ROOTってのはようわからんのですが。上のコードではたとえば以下のような結果が得られます。System.out.println(resource);}などとして子要素を取得することもできます。結果はL/Samples/.classpathL/Samples/.projectF/Samples/META-INFL/Samples/build.propertiesF/Samples/classesF/Samples/sourceです。これだと一階層下のリソースしか取得できないですね。ディレクトリツリーを末端まで走査するには、自前で再帰的に処理する必要がありそうですね。†プロジェクト内にディレクトリやファイルを作成する方法です。実際に生成するといった手順となります。プロジェクトHogeProject?に対して/HogeProject/tmp/xmlというディレクトリを掘るコードは以下のようなります。Path("tmp"));で、プロジェクト直下にディレクトリtmpを作成します。作成といってもワークスペースだけであって実際にファイルシステム上に作成はされていません。サンプルコードは、ファイルが存在しない場合作成するという処理になってますね。ちなみにこの存在チェックは、ワークスペース上に存在するかであって、実際ファイルシステム上にあるかどうかのチェックはしていません。CoreException;の引数ですが、意味は以下の通りみたいです。monitorGUIのモニタを表示する場合にセットする第一引数の指定で挙動がどう変わるかを、とりあえずワークスペースにフォルダがある場合・ない場合、ファイルシステム上にある場合・ない場合でまとめてみました。ワークスペースに作成。作成するファイルシステム上になくて、ワークスペース上にある場合、force=trueならファイルシステム上にファイルを作成するかと思ったのですが、例外が発生しましたね。ワークスペースにだけ作成ようするにlocalがfalseの場合、ファイルシステム上には何も反映させないようですね。ワークスペースとファイルシステムが同期がとれてない場合には何もしない方がよいので、通常はforceフラグはfalseにしておいたほうがよいですね。localフラグに関してはtrueにしておかないとファイルシステム上に反映されないのでtrueがよいですね。ファイル作成時はファイルの中身を渡してあげなくちゃいけないのですが、それにはファイルのストリームを渡してあげる必要があります。CoreException;の引数InputStream?ですね。通常ファイルの内容からStringを作成しByteArrayInputStream?を作成すればよいと思います。以下のような感じですね。ByteArrayInputStream(contents.getBytes());ディレクトリの場合と同様、挙動を調べてみました。作成するあれ、でもこれだと普通にファイルを上書きすることができないですね。null);を呼んでワークスペースとファイルシステムからファイルを消して、んで作成ってやればできますが、きっと上書きのメソッドがあると思います。†JDTまわりをやってて、IResource系にアクセスできるのかなあと思ってたら、ありました。cu.getCorrespondingResource();対応するIResourceが取得できます。下位層のページがありません。通常のファイルシステムとの行き来が説明されていました。