gpt4 book ai didi

java - 以编程方式跟踪由 eclipse cleanup 完成的文件更改

转载 作者:行者123 更新时间:2023-11-30 06:52:01 28 4
gpt4 key购买 nike

我编写了一个 eclipse osgi 插件,它对 eclipse 项目中存在的 java 文件运行清理和格式化操作。比如:

  • 运行包含 eclipse 命令的批处理文件
  • 它打开 Eclipse 编辑器
  • 加载作为批处理命令中的参数传递的 Eclipse 项目
  • 运行清理和格式化操作
  • 关闭 eclipse

现在我的问题是我需要跟踪此操作已更改的文件。我正在使用 cleanUpsAction 执行清理更改,该操作作为线程运行在多个文件上并进一步 fork 。它返回无效。

我也尝试过IResourceChangeListener,但我无法获取已更改资源的名称。我获取了 IResourceChangeEvent 对象,但资源的详细信息并未从中出来,当我打印 IResourceChangeEvent.getSource() 时,它总是返回项目名称。

最佳答案

IResourceChangeEvent中有多个级别的对象,顶部通常是项目或工作区,下面是文件夹和文件。这些由 IResourceDelta 对象表示。

要查看所有这些,首先从事件中获取顶级 IResourceDelta:

IResourceChangeEvent event = ... the event

IResourceDelta delta = event.getDelta();

然后使用 IResourceDeltaVisitor 访问增量中的每个资源:

delta.accept(visitor);

其中visitor是实现IResourceDeltaVisitor的类。

访问者中只有一种方法:

public boolean visit(IResourceDelta delta) throws CoreException

每个资源都有一个增量。

IResourceDelta.getResource 为您提供更改后的资源。 IResourceDelta.getKind 告诉您更改的类型(添加、删除、更改)。

关于java - 以编程方式跟踪由 eclipse cleanup 完成的文件更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42562305/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com