检索netbeans中当前打开的文件或项目的位置



我在netbeans中使用一个自定义按钮,该按钮引用了打开项目中的文件。但是,我在基于打开的项目检索该文件的位置时遇到了问题。因此,我需要一些可以返回我正在工作的项目的位置或我正在处理的文件的位置的东西。
实际上,我需要能够调用

String projectLocation = methodOrVarToGetOpenProjectLocation();

我不能使用当前目录,因为我用按钮创建的插件与我正在工作的项目不在同一个地方。

任何想法吗?

你可以像这样找到Project目录:

Lookup lookup = Utilities.actionsGlobalContext(); 
Project project = lookup.lookup(Project.class);
FileObject projectDir = project.getProjectDirectory();
String projectLocation = projectDir.getPath();

这些类都来自NetBeans API: UtilitiesLookupProjectFileObject

如果你不想只使用当前的项目,你可以使用OpenProjects类。您可以获得第一个打开的项目,如下所示:

Project project = OpenProjects.getDefault().getOpenProjects()[0];

根据你的按钮的功能,使用Main Project:

可能是有意义的
Project mainProject = OpenProjects.getDefault().getMainProject();

Dave Webb上面的回答是关于获得项目位置的。然而,有一个问题是,如果在点击按钮之前没有直接选择所需的项目,它将不认为该项目是主项目。
例如,在文件中进行编辑,然后单击按钮将不再找到项目,因为项目名称不是最后单击的内容。
我发现一些代码抓住了打开的文件名:

TopComponent activeTC = TopComponent.getRegistry().getActivated();
DataObject dataLookup = activeTC.getLookup().lookup(DataObject.class);
String filePath = FileUtil.toFile(dataLookup.getPrimaryFile()).getAbsolutePath();

project为null的情况下(在他的第一个代码块的第二行之后),我在if语句中使用了它。

这给了我正在工作的文件的路径,然后花了很短的时间处理字符串以获得项目的位置。

相关内容

  • 没有找到相关文章

最新更新