Макрос JEdit - открывает и сохраняет файл
Вопрос
У меня есть макрос JEdit (BeanShell), который открывает определенный файл, а затем сразу же сохраняет файл в моей папке c: \ temp (чтобы случайно не обновить реальный файл). Р>
Вот код оболочки бина:
logFilePath = "c:\\temp\\aj.txt";
jEdit.openFile( view , logFilePath );
_buffer = jEdit.getBuffer(logFilePath);
_buffer.save(view,"c:\\temp\\backup.txt",true);
Это дает мне следующую ошибку:
I/O Error
Each buffer can only execute one input/output operation at a time.
Please wait until the current operation finishes
(or abort it in the I/O progress monitor) before starting another one.
Я попытался добавить цикл while, чтобы дождаться, пока buffer.isLoaded ()
станет истинным, но это просто заходит в бесконечный цикл.
Кажется, что работает - это всплывающее окно сообщения ( Macros.message
). Тем не менее, я действительно не хочу иметь этот ненужный диалог. Р>
Я не знаю много Java, поэтому, пожалуйста, скажите мне, если я делаю ошибку новичка. Р>
Обновление:
Добавил мой собственный ответ, чтобы показать код, на который указывает ответ Сергея . Р>
Решение
Вы можете попробовать это решение , вызвав VFSManager. waitForRequests ();. код> р>
Другие советы
Это работает
На этот код указывает ответ Сергея выше. , Р>
Добавить VFSManager.waitForRequests ();
после команды jEdit.openFile ()
. Р>
Полный код
logFilePath = "c:\\temp\\aj.txt";
jEdit.openFile( view , logFilePath );
VFSManager.waitForRequests();
/*
VFSManager.waitForRequests();
jEdit waits then for the file to be completely loaded before continuing
... It's designed for waiting on all 'pending I/O requests'".
*/
_buffer = jEdit.getBuffer(logFilePath);
_buffer.save(view,"c:\\temp\\backup.txt",true);
Вы также можете сделать это менее жирным шрифтом.
<Ол>