2016-12-16 27 views
2

我正在開發一個Eclipse插件,其中我試圖通過嚮導從用戶那裏獲取輸入。
在嚮導中按下完成按鈕後,我使用IWorkspace,IProject等接口在工作區中創建項目。將現有文件夾複製到Eclipse工作區中新創建的項目中

我想將現有的文件夾(可能還包含子文件夾和文件)複製到新創建的項目中,並在工作區中顯示該文件夾。該文件夾不是Eclipse項目。

有沒有辦法做到這一點?

回答

2

A 快捷方便解決方案將現有文件夾(及其所有內容)複製到項目位置下方的所需位置,然後刷新項目。

例如:

IProject project = ... 
IPath location = project.getLocation(); 
Files.copy(pathToExistingFolder, location.toFile().toPath()); 
project.refreshLocal(IResource.DEPTH_INFINITE, null); 

適當溶液將遍歷現有文件夾和創建每個文件和文件夾在其中發現的副本。

要創建一個新的文件,請使用

IProject project = ... 
IFile file = project.getFile("path/relative/to/prooject"); 
file.create(inputStream, IResource.NONE, null); 
// or, to override and existing file (file.eists() == true): 
file.setContents(inputStream, IResource.NONE, null); 

inputStream假設通過從現有文件夾中當前遍歷文件進行備份。

要創建一個新文件夾,使用

IProject project = ... 
IFolder folder = project.getFolder("path/relative/to/prooject"); 
folder.create(IResource.NONE, true, null); 

我進一步假設你現有的文件將最終落得被存儲在(賈裏德)插件。在這種情況下,後一種方法是唯一可行的,因爲它可以讓您從插件存儲中提供文件夾結構和文件內容。

Plugin Development Environment (PDE)提供擴展點和API到manage and execute templates during project-creation。雖然你當然不希望依賴於PDE的插件,但你可能想看看這些源代碼:https://github.com/eclipse/eclipse.pde.ui/tree/master/ui/org.eclipse.pde.ui/src/org/eclipse/pde/ui/templates

+0

嗨。謝謝回答。實施快速和骯髒的方式有沒有問題?另外,Files.copy(pathToExistingFolder,location.toFile()。toPath());給出了一個錯誤:「類型Files中的方法副本(Path,OutputStream)不適用於參數(路徑,路徑)」 – tejas

+0

@tejas確保使用正確的「路徑」 - 這必須是java.nio .file.Path不是'org.eclipse.core.runtime.Path'。 –

+0

@tejas訪問由工作區管理的文件的首選方式是通過資源API。因此,您將避免在複製工作區後面的文件和刷新工作區狀態之間可能出現的中間故障。 –

相關問題