2012-01-09 54 views
4

我正在開發一個創建新項目嚮導的Eclipse插件。在工作區中創建這樣的新項目時,我需要它將文件夾及其後代從插件複製到工作區中剛創建的項目。問題是,雖然項目是IResource,但插件文件夾位於文件系統中。如何以編程方式將文件夾從插件複製到工作空間中的新項目?

我成功地獲取了我需要複製的源插件文件夾的URL,並且擁有IProject參考。

我需要知道的是:如何將前者複製到後者中?

回答

5

查看this answer查看如何獲取文件/文件夾「out of」插件。

然後使用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

是的,我確實設法從一個插件中獲取一個文件夾,但我實際上需要複製一個文件夾和子文件夾,而不僅僅是一個文件。我猜InputStream我只能複製文件內容而不是整個文件夾(和相關內容)。有什麼建議? – Sindico 2012-01-09 21:02:52

+0

@Silli一個小的遞歸會有幫助。 – 2012-01-09 22:26:09

+0

該軟件包是否需要解壓縮以便能夠從中讀取文件? – 2014-10-07 10:50:27

0

這是不可能的,也不一定是知道的文件(你不能在孩子迭代)。不要使用帶有文件和子文件夾的文件夾,而要使用該結構創建一個zip文件,並在工作區中解壓zip(這應該保留所需的結構)。

+0

這是一個很好的建議謝謝。如何以編程方式解壓縮? – Sindico 2012-01-10 08:09:45

+0

一個好的起點是http://stackoverflow.com/a/1303771/173101中的代碼片段,或者使用http://java.sun.com/developer/technicalArticles/Programming/compression/ – 2012-01-10 08:18:55

+0

上的文檔@Silli Eclipse'如果需要,FileLocator.toFileURL()'將爲你解壓文件**。 – 2012-01-10 13:24:16

相關問題