Я работаю над программой для загрузки файлов на сервер в определенное время, заданное администратором, администратор вводит краткие значения (часы, минуты).Запланировать запуск метода в Java за несколько раз
Пример:
[Hours,Minutes]= [2,12] [ 2,15],[ 5,20 ]
Я сохранить эти значения в файле CSV.
BufferedReader reader;
try {
reader = new BufferedReader(new FileReader("C:/Users/BACKENDPC1/Desktop/timer.csv"));
String line = null;
while ((line = reader.readLine()) != null) {
lines.add(line);
}} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();}
//Get the Date corresponding to 11:01:00 pm today.
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("HH");
Format formatter = new SimpleDateFormat("m");
Format sec=new SimpleDateFormat("s");
/*heur=getList().get(i).substring(0, getList().get(i).indexOf(substr));
minute=getList().get(i).substring(getList().get(i).indexOf(substr) + substr.length());
System.out.println("Time selected is: "+heur+","+minute);*/
while (i<lines.size()) {
heur=lines.get(i).substring(0, lines.get(i).indexOf(substr));
minute=lines.get(i).substring(lines.get(i).indexOf(substr) + substr.length());
System.out.println(sdf.format(calendar.getTime()));
System.out.println(Integer.parseInt(formatter.format(new Date())));
if(Integer.parseInt(sdf.format(calendar.getTime()))==Integer.parseInt(heur)&&(Integer.parseInt(formatter.format(new Date()))==Integer.parseInt(minute))){
System.out.println(Integer.parseInt(heur)+"H"+ Integer.parseInt(minute));
calendar.set(Calendar.HOUR_OF_DAY,Integer.parseInt(heur));
calendar.set(Calendar.MINUTE, Integer.parseInt(minute));
calendar.set(Calendar.SECOND, 0);
Date time = calendar.getTime();
timer = new Timer();
timer.schedule(new RemindTask(), time);
i++;
}}
i=1;
start();
/* timer = new Timer();
timer.schedule(new RemindTask(), seconds*1000);*/
}
class RemindTask extends TimerTask {
public void run() {
up.Uplaod();
long start = new Date().getTime();
long end=0;
int numIndexed=0;
boolean cond=true;
end = new Date().getTime();
cond=false;
// System.out.println("Indexing " + numIndexed + " files took "
// + (end - start) + " milliseconds");
timer.cancel();
//Terminate the timer thread
}
Я запустил этот метод, чтобы запланировать выполнение загрузки. Он работает в два раза и после этого я получаю сообщение об ошибке:
Исключение в нити java.lang.NumberFormatException «АВТ-EventQueue-0»: Для ввода строки: «Часы»
в java.lang.NumberFormatException. forInputString (Unknown Source)
на java.lang.Integer.parseInt (Unknown Source)
в java.lang.Integer.parseInt (Unknown Source)
в Reminder.start (Reminder.java:64)
в Reminder .start (Reminder.java:80)
at csvFileUploadMulti $ 4.actionPerformed (csvFileUploadMulti.java:269)
в javax.swing.AbstractButton.fireActionPerformed (Unknown Source)
в javax.swing.AbstractButton $ Handler.actionPerformed (Unknown Source)
в javax.swing.DefaultButtonModel.fireActionPerformed (Unknown Source)
в javax.swing .DefaultButtonModel.setPressed (Unknown Source)
на javax.swing.plaf.basic.BasicButtonListener.mouseReleased (Unknown Source)
в java.awt.Component.processMouseEvent (Unknown Source)
в javax.swing.JComponent.processMouseEvent (Неизвестный источник)
at java.awt.Component.processEvent (Неизвестный Sou RCE)
в java.awt.Container.processEvent (Unknown Source)
в java.awt.Component.dispatchEventImpl (Unknown Source)
в java.awt.Container.dispatchEventImpl (Unknown Source)
в java.awt .Component.dispatchEvent (Unknown Source)
на java.awt.LightweightDispatcher.retargetMouseEvent (Unknown Source)
в java.awt.LightweightDispatcher.processMouseEvent (Unknown Source)
на java.awt.LightweightDispatcher.dispatchEvent (Unknown Source)
at java.awt.Container.dispatchEventImpl (Неизвестный источник)
в java.awt.Window.dispatchEventImpl (Unknown Source)
в java.awt.Component.dispatchEvent (Unknown Source)
в java.awt.EventQueue.dispatchEventImpl (Unknown Source)
в java.awt.EventQueue .access $ 400 (Unknown Source)
в java.awt.EventQueue $ 3.run (Unknown Source)
в java.awt.EventQueue $ 3.run (Unknown Source)
в java.security.AccessController.doPrivileged (Native Method)
at java.security.ProtectionDomain $ 1.doIntersectionPrivilege (Неизвестный источник)
at java.security.ProtectionDo Основной $ 1.doIntersectionPrivilege (Unknown Source)
в java.awt.EventQueue $ 4.run (Unknown Source)
в java.awt.EventQueue $ 4.run (Unknown Source)
на java.security.AccessController.doPrivileged (Native Method)
в java.security.ProtectionDomain $ 1.doIntersectionPrivilege (Unknown Source)
в java.awt.EventQueue.dispatchEvent (Unknown Source)
в java.awt.EventDispatchThread.pumpOneEventForFilters (Unknown Source)
в java.awt.EventDispatchThread .pumpEventsForFilter (Неизвестный источник)
at java.awt.EventDispatchThread.pumpEventsFo rHierarchy (Unknown Source)
на java.awt.EventDispatchThread.pumpEvents (Unknown Source)
на java.awt.EventDispatchThread.pumpEvents (Unknown Source)
на java.awt.EventDispatchThread.run (Unknown Source)
Может кто-нибудь помочь мне, пожалуйста?
NumberFormatException: для строки ввода: «Часы» –
Строка '' Hours "', неудивительно, не может быть проанализирована на 'int'. Измените свою логику, которая должна извлечь фактическое число. –
Похоже, что у вас csv есть заголовок с именами столбцов. Вероятно, вы должны пропустить это. – talex