Java 如何检测android studio文件修改事件

Java 如何检测android studio文件修改事件,java,file,intellij-idea,android-studio,intellij-plugin,Java,File,Intellij Idea,Android Studio,Intellij Plugin,我需要想象一个项目是如何随时间发展的 我用过这个: 作为检测何时本地修改了任何项目文件的基础 当前的设置是windows 7上的Android Studio。我的问题是,示例中的java.nio.file.StandardWatchEventTypes只有在程序员手动执行“ctrl-s”时才会被触发。 如何实时检测Android Studio文件修改 我的回退方法是设置一个计时器,遍历所有文件。但我宁愿我能抓到合适的文件 编辑:用IntelliJ插件解决,花了我1/2天的时间 首先,本教程来自:

我需要想象一个项目是如何随时间发展的

我用过这个: 作为检测何时本地修改了任何项目文件的基础

当前的设置是windows 7上的Android Studio。我的问题是,示例中的java.nio.file.StandardWatchEventTypes只有在程序员手动执行“ctrl-s”时才会被触发。 如何实时检测Android Studio文件修改

我的回退方法是设置一个计时器,遍历所有文件。但我宁愿我能抓到合适的文件

编辑:用IntelliJ插件解决,花了我1/2天的时间

首先,本教程来自:

并使用menuaction启动/停止BulkFileListener:

public class Watcher implements BulkFileListener {

private final MessageBusConnection connection;

public Watcher() {
    connection = ApplicationManager.getApplication().getMessageBus().connect();
}

public void initComponent() {
    connection.subscribe(VirtualFileManager.VFS_CHANGES, this);
 }

public void disposeComponent() {
   connection.disconnect();
}

@Override
public void before(List<? extends VFileEvent> events) {
   //logging done
}

@Override
public void after(List<? extends VFileEvent> events) {
    //logging done
}
}
公共类观察程序实现BulkFileListener{
私有最终消息总线连接;
公众观察者(){
连接=ApplicationManager.getApplication().getMessageBus().connect();
}
公共组件(){
订阅(VirtualFileManager.VFS_CHANGES,this);
}
公共无效处置组件(){
连接断开();
}
@凌驾

前公众无效(列表我相信您可以构建一个脚本来监控各个项目的文件夹,一旦某个文件被更改,就执行您想要执行的操作。这就是java示例所做的,但是Android Studio似乎将所有内容都保存在临时文件中,并且只在以下情况下写入更改:关闭、ctrl-s和从另一个p查看文件时我已经尝试过遍历文件树(以一些设置的间隔)并检查file.lastModified()属性,但除非发生上述事件,否则它不会被设置。目前我正在使用JavasRobot按“ctrl-s”有了小的延迟,这就迫使android studio更新文件,还有什么更聪明的吗?我相信你可以构建一个脚本来监控各个项目的文件夹,一旦一些文件被更改,就执行你想要的。这就是java示例所做的,但android studio似乎将所有内容都保存在临时文件中nd仅在以下情况下写入更改:close、ctrl-s以及从其他程序(如explorer)查看文件时。我已尝试遍历文件树(以设置的间隔)并检查file.lastModified()属性,但除非发生上述事件,否则不会设置该属性。目前我正在使用javas Robot按“ctrl-s”有了小的延迟,这就迫使android studio更新文件,还有什么更聪明的吗?我相信你可以构建一个脚本来监控各个项目的文件夹,一旦一些文件被更改,就执行你想要的。这就是java示例所做的,但android studio似乎将所有内容都保存在临时文件中nd仅在以下情况下写入更改:close、ctrl-s以及从其他程序(如explorer)查看文件时。我已尝试遍历文件树(以设置的间隔)并检查file.lastModified()属性,但除非发生上述事件,否则不会设置该属性。目前我正在使用javas Robot按“ctrl-s”在小延迟的情况下,这迫使android studio更新文件,还有比这更聪明的吗?