관리자가 지정한 특정 시간에 파일을 서버에 업로드하는 프로그램에서 작업하는 경우 관리자는 배수 값 (시, 분)을 입력합니다.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
}
이 메서드를 실행하여 업로드 실행을 예약합니다. 그것은 두 번 작동하고 그 후 나는 오류 얻을 : 스레드 "AWT-EventQueue의-0"java.lang.NumberFormatException의에서
예외 : 입력 문자열 : "시간"java.lang.NumberFormatException의에서
을. forInputString (알 소스) java.lang.Integer.parseInt (알 소스)에 java.lang.Integer.parseInt
(알 소스)에 Reminder.start
(Reminder.java:64)에서
플랜에
.start (Reminder.java:80)
at csvFileUploadMulti $ 4.actionPerformed (csvFileUploadMulti.java:269) 0 javax.swing.AbstractButton.fireActionPerformed (알 수없는 소스)에서 javax.swing.AbstractButton $ Handler.actionPerformed (알 수없는 소스) javax.swing.DefaultButtonModel.fireActionPerformed에서
(알 수없는 소스)에서
있는 javax.swing에서
.DefaultButtonModel.setPressed (알 소스) javax.swing.plaf.basic.BasicButtonListener.mouseReleased (알 소스)에 java.awt.Component.processMouseEvent
(알 소스)
에서
javax.swing.JComponent.processMouseEvent에서 (알 수없는 출처)
at java.awt.Component.processEvent (알 수없는 소스) RCE)에있는 java.awt java.awt.Container.processEvent (알 소스)에 java.awt.Component.dispatchEventImpl
(알 소스)에 java.awt.Container.dispatchEventImpl
(알 소스)에
.Component.dispatchEvent (알 소스) java.awt.LightweightDispatcher.retargetMouseEvent (알 소스)에 java.awt.LightweightDispatcher.processMouseEvent
(알 소스)에
java.awt.LightweightDispatcher.dispatchEvent에서
(알 소스)
at java.awt.Container.dispatchEventImpl (알 수없는 소스)java.awt.EventQueue에서 java.awt.Window.dispatchEventImpl (알 소스)에 java.awt.Component.dispatchEvent
(알 소스)에 java.awt.EventQueue.dispatchEventImpl
(알 소스)
에서 0 .access $ 400 (알 수없는 소스) java.awt.EventQueue $의 3.run (알 수없는 소스) java.awt.EventQueue $의 3.run에서
(알 수없는 소스) java.security.AccessController.doPrivileged에서
(기본 방법에
)
at java.security.ProtectionDomain $ 1.doIntersectionPrivilege (알 수없는 소스)
at java.security.ProtectionDo main $ 1.doIntersectionPrivilege (알 수없는 소스) java.awt.EventQueue $의 4.run에서
(알 수없는 소스) java.awt.EventQueue $의 4.run에서
(알 수없는 소스) java.security.AccessController.doPrivileged (기본 방법)에서
java.awt.EventDispatchThread에서 java.security.ProtectionDomain $ 1.doIntersectionPrivilege (알 수없는 소스) java.awt.EventQueue.dispatchEvent에서
(알 수없는 소스) java.awt.EventDispatchThread.pumpOneEventForFilters에서
(알 수없는 소스)
에서 .pumpEventsForFilter (알 수없는 소스)
at java.awt.EventDispatchThread.pumpEventsFo rHierarchy (알 소스)에 java.awt.EventDispatchThread.pumpEvents
(알 소스)에 java.awt.EventDispatchThread.pumpEvents
(알 소스)에 java.awt.EventDispatchThread.run
(알 소스)
누군가 나를 도와 줄 수 있습니까?
NumberFormatException : 입력 문자열의 경우 : "Hours" –
문자열 "Hours"는 'int'로 구문 분석 될 수 없습니다. 실제 숫자를 추출 할 논리를 변경하십시오. –
csv와 마찬가지로 열 이름이있는 헤더가 있습니다. 아마 그것을 건너 뛰십시오. – talex