Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2017, 18:08   #11
Evdar
Пользователь
 
Регистрация: 07.12.2015
Сообщений: 19
По умолчанию

Вот кое как работающий код, перезапускает пока блокнот, взял просто что бы потестить, перезапуск осуществляется через bat файл, умнее ничего не придумал)( не ругайте сильно если что)
Код:
import org.apache.log4j.Logger;
 
import java.io.*;
import java.util.concurrent.TimeUnit;
 
public class Main {
 
    private static final Logger log = Logger.getLogger(Main.class);
 
    private static String FILE_NAME = "C:\\GPU-Z Sensor Log.txt";
 
    public static void main(String[] args) throws IOException, InterruptedException {
 
        while (true) {
            if (parseLog()) {
                checkAndRestart();
            }
            TimeUnit.SECONDS.sleep(10);
        }
    }
 
    public static void checkAndRestart() {
        createBatFile();
        try {
            Runtime.getRuntime().exec("cmd /c C:\\restart.bat");
            log.info("Restart application");
        } catch (IOException e) {
            e.printStackTrace();
            log.error("Error when starting file restart.bat.");
        }
    }
 
    public static void createBatFile() {
        File batFile = new File("C:\\", "restart.bat");
 
        log.info("File restart.bat was created.");
 
        String start = new String("start notepad");
        String close = new String("taskkill notepad\n");
 
        // открываем поток для записи
        try (BufferedWriter bw = new BufferedWriter(new FileWriter(batFile));) {
            // пишем данные
            bw.write(close);
            bw.write(start);
            log.info("File is full.");
            // закрываем поток
            bw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
    public static boolean parseLog() {
        clearFileBeforeCheck();
        double temp = 0;
        try (BufferedReader reader = new BufferedReader(new FileReader(FILE_NAME))) {
            log.info("Temperature reading started.");
            String c;
            TimeUnit.SECONDS.sleep(1);
            while ((c = reader.readLine()) != null) {
                TimeUnit.SECONDS.sleep(1);
                String[] line = c.split(",");              // Разбиваем строку на массив
                temp = Double.parseDouble(line[3].trim()); // 4 столбец это температура, берем именно его и убераем все пробелы
                log.info("Current temperature is " + temp + ".");
                if (temp > 42) { // указываем температуру
                    return true;
                }
            }
        } catch (IOException e) {
            System.out.println(e.getMessage());
        } catch (InterruptedException e) {
            e.printStackTrace();
 
        }
        return false;
    }
 
    public static void clearFileBeforeCheck() {
        try {
            FileWriter fstream1 = new FileWriter(FILE_NAME);// конструктор с одним параметром - для перезаписи
            BufferedWriter out1 = new BufferedWriter(fstream1); //  создаём буферезированный поток
            out1.write(""); // очищаем, перезаписав поверх пустую строку
            out1.close(); // закрываем
            System.out.println("File is clear!");
            log.info("File is clear!");
        } catch (Exception e) {
            System.err.println("Error in file cleaning: " + e.getMessage());
            log.error("Error in file cleaning: ", e);
        }
    }
}
Evdar вне форума Ответить с цитированием
Старый 06.09.2017, 18:20   #12
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А зачем bat? Можно и без него эти команды запустить через Runtime.exec.
taskkill так же, а для запуска просто путь к программе без start.

И почему функция называется checkAndRestart? Где и чего check?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 06.09.2017, 19:00   #13
Evdar
Пользователь
 
Регистрация: 07.12.2015
Сообщений: 19
По умолчанию

По поводу Runtime.getRuntime().exec("notepad" ); вопросов не имею, запускается нормально, а вот с закрытием проблема, Runtime.getRuntime().exec("taskkill notepad"); не работает...
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
зачем bat? Можно и без него эти команды запустить через Runtime.exec.
taskkill так же, а для запуска просто путь к программе без start.

Виноват) забыл поменять)
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
И почему функция называется checkAndRestart? Где и чего check?
Evdar вне форума Ответить с цитированием
Старый 06.09.2017, 19:08   #14
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Должно работать, может быть надо taskkill /im notepad.exe
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 06.09.2017, 19:10   #15
Evdar
Пользователь
 
Регистрация: 07.12.2015
Сообщений: 19
По умолчанию

Да , работает)
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Должно работать, может быть надо taskkill /im notepad.exe
Тогда можно и без бата)
Evdar вне форума Ответить с цитированием
Старый 06.09.2017, 19:20   #16
Evdar
Пользователь
 
Регистрация: 07.12.2015
Сообщений: 19
По умолчанию

Теперь буду думать над хоть какой то графической оболочкой)
Evdar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для мониторинга цен с сайта Илья Бочаров Помощь студентам 3 05.06.2014 17:25
Программа для мониторинга bitinstant.com по API ? iks77777 Win Api 0 24.05.2013 18:37
Нужна программа для GPS мониторинга Менеджер2 Фриланс 1 17.05.2010 22:58
Программа мониторинга Ivn Win Api 3 05.02.2009 21:24
Программа для удаленного мониторинга оборудования ALeonP Работа с сетью в Delphi 1 09.12.2007 15:26