2013-07-13 4 views
0

스크린 샷을 찍는 프로그램을 만들고 있는데, JButton에 actionlistener를 넣고 싶을 때 이미지를 특정 폴더에 저장하면 이미 존재합니다. 여기내 스크린 샷을 자바로 저장하는 방법

내가 무엇을해야 무슨 생각입니다 :

@Override 
public void actionPerformed(ActionEvent arg0) { 
    File dir = new File("C://SnippingTool+/" + date.getDay()); 
    dir.mkdirs(); 
try { 
    ImageIO.write(shot, "JPG", dir); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

    } 

}); 

나는 내 File dir = new File 함께 할 수있는 뭔가가 내가 적절한 장소에 저장하고 있지 않다 생각합니다. 내가이 두 라인을 함께 보는 바와 같이이 이제 출력 당신이하려고하는 것을 의미합니다 ...

File dir = new File("C://SnippingTool+/" + date.getDay()); 
dir.mkdirs(); 

try { 
shot = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize())); 
    } catch (HeadlessException e1) { 
     e1.printStackTrace(); 
    } catch (AWTException e1) { 
     e1.printStackTrace(); 
    } 
+0

코드 블록에 일관되고 논리적 인 들여 쓰기를 사용하십시오. 코드의 들여 쓰기는 사람들이 프로그램 흐름을 이해하도록 돕기위한 것입니다. –

답변

1

문제 :

은 여기 내 Robot이 스크린 샷을 복용입니다 쓰기 위해 디렉토리가있는 경우 ImageIO이 파일을 기다리는 중입니다 ...

대신

귀하의 코멘트에 대한 응답으로
File output = new File("C://SnippingTool+/" + date.getDay() + ".jpg"); 
File dir = output.getParentFile(); 
if (dir.exists() || dir.mkdirs()) { 
    try { 
     ImageIO.write(shot, "JPG", output); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    }  
} else { 
    System.out.println("Bad Path - " + dir); 
} 
+0

답장을 보내 주셔서 감사합니다. 나는 그것을 시도했지만 어떤 이유로 오류가 발생했습니다. 내가 할 수있는 건 없니? –

+3

당신은 오류가 무엇인지 말하는 것으로 시작할 수 있습니다 ... –

+1

C : \에 쓸 수있는 권한이 없습니다. 'System.getProperty ("사용자)와 같은 것을 사용하려고 시도합니다.home ")'을 기본 경로로 사용하십시오 – MadProgrammer

0

:

입니다
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at main$2$2.actionPerformed(main.java:148) 

상기는 : System.getProperty를 ("사용자로 :

File output = new File(System.getProperty("user.home") + 
         date.getDay() + ".jpg"); 

는 (필자는"\ C "를 변경했습니다. 집")).

은 (읽기 쉽도록 두 줄로) 그 줄에 NPE의 두 가지 원인이 있습니다

  • System.getProperty 경우 명명 된 속성을 찾을 수 없습니다, 그것은 null를 반환합니다. 지금 "user.home" 속성 이 있어야합니다 ...하지만 "User.home" 거의 확실하게 존재하지 않습니다. (속성 이름은 대소 문자를 구분합니다!) datenull 또는 date.getDay() 반환 null입니다

  • 합니다. 우리는 어떻게 date ... 초기화했는지 알지 못합니다. (Date하지만 ... 좋은 추측 것)


"user.home" 재산 모두 그들이 다른 의미 불구하고 "user.dir" 속성은 ... 작동합니다.