2012-01-09 2 views
4

私はEclipse Pluginを開発して、新しいProject Wizardを作成しています。このような新しいプロジェクトをワークスペースに作成するときは、フォルダとその子孫をプラグインからワークスペースの作成したばかりのプロジェクトにコピーする必要があります。問題は、プロジェクトがIResourceの間、プラグインフォルダがファイルシステムにあることです。プラグインからワークスペース内の新しいプロジェクトにフォルダをプログラムでコピーする方法はありますか?

私はコピーする必要のあるソースプラグインフォルダのURLを取得することに成功しました。私はIProjectリファレンスを持っています。

私が知る必要があるのは、前者を後者にコピーする方法です。

答えて

5

this answerをチェックして、ファイル/フォルダをプラグインから "出す"方法を見てください。

その後InputStreamを使用してプロジェクトおよび設定ファイルの内容で新しいファイル/フォルダを作成します。

void copyFiles (File srcFolder, IContainer destFolder) { 
    for (File f: srcFolder.listFiles()) { 
     if (f.isDirectory()) { 
      IFolder newFolder = destFolder.getFolder(new Path(f.getName())); 
      newFolder.create(true, true, null); 
      copyFiles(f, newFolder); 
     } else { 
      IFile newFile = destFolder.getFile(new Path(f.getName())); 
      newFile.create(new FileInputStream(f), true, null); 
     } 
    } 
} 
+0

私はプラグインからフォルダを取得するためにmanagetをやったが、実際にはフォルダとサブフォルダだけをコピーする必要がある。 InputStreamでは、フォルダ全体(および関連するコンテンツ)ではなく、ファイルコンテンツのみをコピーすることができます。何かアドバイス? – Sindico

+0

@Silli少し再帰が助けになります。 –

+0

必要なバンドルを解凍して、そこからファイルを読み込むことができますか? –

0

これは正確にファイルを知らなくても可能ではない(あなたが子供を反復処理することはできません)。ファイルとサブフォルダを含むフォルダを使用する代わりに、その構造を持つzipを作成し、作業領域にzipを展開します(これにより、必要な構造が維持されます)。

+0

これは良いアドバイスですありがとうございます。プログラム的にどのように展開するのですか? – Sindico

+0

良いスタートポイントはhttp://stackoverflow.com/a/1303771/173101のスニペットです。http://java.sun.com/developer/technicalArticles/Programming/compression/ –

+0

@Silli Eclipse ' **必要なら** FileLocator.toFileURL() 'はあなたのためにファイルを展開します**。 –

関連する問題