2015-06-05 2 views
0

Я ищу способ постоянного мониторинга при открытии файла в конкретной сторонней программе, для которой у меня нет кода (например, Microsoft Word) имя определенного файла открывается и когда этот файл/программа закрывается.Файлы мониторинга программ Java, открытые и закрытые в стороннем приложении

Целью зная эту информацию является то, что я могу отслеживать, как долго определенные «документы» или файлы открываются, чтобы легко записывать часы на различные проекты.

Прямо сейчас, единственный способ, которым я могу думать, чтобы добиться этого, заключается в том, чтобы моя программа Java была той, кто отправил команды для открытия определенных файлов, а затем отметил, когда эти файлы закрыты, но я бы предпочитайте, чтобы это выполнялось больше в фоновом режиме и было максимально простым и прозрачным для пользователя.

Спасибо!

ответ

0

Используйте это, чтобы проверить, открыт ли файл в заданное время. Периодически проверяйте это, и когда состояние изменяется, файл был либо открыт, либо закрыт.

try { 
    FileOutputStream stream = new FileOutputStream(file); 
    // file is closed 
} catch(IOException e) { 
    // file is open 
} 
+0

Это имеет смысл. Так, как я полагал, вероятно, невозможно настроить таргетинг на стороннее приложение, а вместо этого нацелить файлы, которые можно открыть. Чтобы получить точное время открытия каждого файла, мне нужно было бы запустить это сканирование совсем немного. Будет ли свет на ресурсы? –

+0

Зависит от того, насколько точна ваша временная метка. Если вам нужно знать только в течение часа, да, это было бы очень легко. Если вы хотите узнать в течение сотой секунды, не светит вообще. Вы, вероятно, хотите где-то посередине. – SexmanTaco

+0

Справа. До сотой секунды, вероятно, слишком много, но в течение минуты или двух было бы предпочтительнее. Я дам ему шанс и посмотрю, насколько он свет. –

0
/ TO CHECK WHETHER A FILE IS OPENED 
    // OR NOT (not for .txt files) 

    // the file we want to check 
    String fileName = "C:\\Text.xlsx"; 
    File file = new File(fileName); 

    // try to rename the file with the same name 
    File sameFileName = new File(fileName); 

    if(file.renameTo(sameFileName)){ 
     // if the file is renamed 
     System.out.println("file is closed");  
    }else{ 
     // if the file didnt accept the renaming operation 
     System.out.println("file is opened"); 
    } 
Смежные вопросы