Синхронизировать виртуальный файл с физическим файлом в плагине Intellij IDEA
Я реализую плагин для Intellij IDEA, который требует сохранения файла перед выполнением действия. Действие - это команда оболочки, она требует, чтобы имя файла передавалось как параметр командной строки.
AFAIK Idea сохраняет (синхронизирует) файлы при деактивации фрейма, поэтому, если я щелкну правой кнопкой мыши по файлу и нажму на свое действие - будет использоваться старая версия файла. Если я перейду в другое окно, вернитесь в Idea и щелкните по моему действию - будет использоваться текущая версия файла.
Я прочитал этот документ о виртуальной файловой системе и обнаружил, что могу инициировать загрузку файла из файловой системы (например, VirtualFileManager.syncRefresh()
или же VirtualFileManager.asyncRefresh()
). Я попробовал это, надеясь, что это сработает, но это не так.
Вопрос: как вручную (программно) сохранить файл?
1 ответ
При форматировании моего вопроса я проверил еще раз, и это сработало для меня.
FileDocumentManager.getInstance().saveAllDocuments();
РЕДАКТИРОВАТЬ
Наконец придумали решение
FileDocumentManager fileDocumentManager = FileDocumentManager.getInstance();
Document document = fileDocumentManager.getDocument(file);
if (document != null) {
fileDocumentManager.saveDocument(document);
}