2012-02-27 117 views
2

因此,我试图设置我的Eclipse插件,以便它可以处理一些数据并在项目中生成一些文件。我可以使用project.getFolder().create创建一个IFolder,并使用project.getFile().create()创建正确的IFile对象。但是,一旦创建完成,它们就会显示在项目导航器中,但是我发现很多关于“本地”资源的错误,而且它们似乎并没有出现在我的文件系统中。发生了什么,我需要改变什么?资源不是本地的 - 在Eclipse插件中创建文件

下面是创建该文件夹中的代码:

IFolder f = project.getFolder(folderName); 
if (!f.exists()) f.create(false, false, null); 

而且我对创建IFile在本质上是相同的代码。该插件只是在我的本地文件系统上运行,所以我认为这是我的代码中创建错误的东西。

+0

您是否可以使用显示创建的适当代码片段更新您的问题?您的项目是否托管在远程EFS上?或者只是一个标准的本地目录? – 2012-02-27 16:17:04

+0

只是一个标准的本地目录,我添加了一个文件夹的创建代码 - 我假设我缺少一些步骤或对象,使其工作,我只是不知道在哪里。 – Tas 2012-02-27 22:33:28

+0

当你创建文件时,你给它什么样的输入流? – 2012-02-28 12:23:50

回答

1
IFolder f = project.getFolder(folderName); 
if (!f.exists()) f.create(false, false, null); 

在如果设置为true将使该文件夹LOCAL和错误不会进来f.create(...)方法的第二个参数(至少在我的情况下停止)。另外,我看到这些错误来自团队提供者(如git等)。

1

我有同样的问题,我仍然不明白,但我确实有一些工作。我没有文件夹的问题,只有文件。起初,我试图创建文件时,设置文件内容:

file.create(contents, true, monitor); 

这没有工作,我得到了“资源不是本地”的问题。

通过拆分内容到一个单独的步骤的设定,突然事情就开始工作:

file.create(new ByteArrayInputStream(new byte[0]), true, monitor); 
file.setContents(content, false, false, monitor); 

我希望可以帮助别人。

0

检查您的输入流。如果它为空或抛出IOException,则f.create仍然会成功。但是该文件在Eclipse UI中将显示为不在本地。