Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Таймер и ожидание подключение флешки. 
V
    Опции темы
lugaru
Дата 20.2.2012, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 18.11.2011

Репутация: нет
Всего: нет



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

Вопросы: 
1.    Как мониторить появления флешки с определенным именем в системе? 
2.    Как создать таймер? 
3.    Как получить список всех виртуальных, логический, и просто подключенных носителей к системе?(Содержимое «Мой Компьютер») 

Буду рад всем идеям и конкретным предложениям)))) 
Заранее благодарен!
PM MAIL   Вверх
COVD
Дата 20.2.2012, 02:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Код

import java.io.File;
import java.util.Timer;
import java.util.TimerTask;

public class NewClass {

    public static void main(String[] a){
        Timer timer = new Timer();
        long delayMillisec = 1000;
        long periodMillisec = 1000;
        timer.schedule(new Task(), delayMillisec,periodMillisec);
        
    }
    
    static class Task extends TimerTask {        
        public void run() {
            File[] files = File.listRoots();
            for (File file : files) {
                System.out.println("file: " + file);
            }
        }
    }
}


Вывод в консоль:
file: A:\
file: C:\
file: D:\
file: E:\
Вывод в консоль после подключения "флешки":
file: A:\
file: C:\
file: D:\
file: E:\
file: F:\

PM MAIL   Вверх
lugaru
Дата 20.2.2012, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 18.11.2011

Репутация: нет
Всего: нет



Цитата(COVD @ 20.2.2012,  02:56)
[code=java]
import java.io.File;
import java.util.Timer;
import java.util.TimerTask;

public class NewClass {

    public static void main(String[] a){
        Timer timer = new Timer();
        long delayMillisec = 1000;
.......
    

спасибо, на счет таймера помогли а за РУТлист, аж стыдно как просто))))
PM MAIL   Вверх
lugaru
Дата 20.2.2012, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 18.11.2011

Репутация: нет
Всего: нет



Цитата(COVD @ 20.2.2012,  02:56)
Код

import java.io.File;
import java.util.Timer;
import java.util.TimerTask;
....................



а не подскажете хоть где искать, как сделать реакцию на событие, например на появление тойже флешки в системе?
PM MAIL   Вверх
COVD
Дата 20.2.2012, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Дальше программировать надо. примерно так:
Код

    static class Task extends TimerTask {
        private Set<File> oldSet = new HashSet<File>();
        public void run() {
            Set<File> newSet = new HashSet<File>();
            File[] files = File.listRoots();
            for (File file : files) {
                newSet.add(file);
                if(!oldSet.contains(file)){
                    System.out.println("event: added " + file);
                }
            }
            for(File file : oldSet){
                if(!newSet.contains(file)){
                    System.out.println("event: removed " + file);
                }
            }
            oldSet = newSet;
        }
    }

PM MAIL   Вверх
lugaru
Дата 20.2.2012, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 18.11.2011

Репутация: нет
Всего: нет



Цитата(COVD @ 20.2.2012,  14:59)
Дальше программировать надо. примерно так:
Код

    static class Task extends TimerTask {
        private Set<File> oldSet = new HashSet<File>();
.....................

Спасибо, решил вопрос уже немного по другому. 
А в принцепе, использывание таймеров не сильно будет нагружать систему? Если, например, установить его на 5 сек. Суть приложения что бы висело в трее и мониторило событие и поминимуму грузило систему. 
PM MAIL   Вверх
COVD
Дата 20.2.2012, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Не сильно. 
Вообще это уже предмет последующей оптимизации правильно работающего приложения. 
PM MAIL   Вверх
lugaru
Дата 20.2.2012, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 18.11.2011

Репутация: нет
Всего: нет



Все уже решил, все работает. Спасибо =)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0687 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.