2017-08-09 3 views
0

私は私のデスクトップのスクリーンショットを取得し、この目的のために、特定のフォルダに保存しようとしていますが保存されません、私は次の方法を書いた:ImageIOには、スクリーンショット

class Test(){ 
    public static String screenshot(String outDir){ 
      try { 
       Robot robot = new Robot(); 
       String format = ".png"; 
       String fileName = String.valueOf(System.currentTimeMillis()) + format; 
       Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()); 
       BufferedImage screenFullImage = robot.createScreenCapture(screenRect); 
       ImageIO.write(screenFullImage, format, new File(outDir + fileName)); 
       System.out.println("Success"); 
       return outDir + fileName; 
      } catch (AWTException | IOException e) { 
       e.printStackTrace(); 
      } 

      return null; 
     } 
} 

私はそうのようなコードを使用することを計画していました:

Test.screenshot("C:\\temp\\"); 

だから、魔法は、それが特定のフォルダ内のスクリーンショットファイルを書き込みませんが、私は、ファイルの拡張子を削除して、明示的にファイルの名前をハードコーディングしている場合には、結果を書き込みます。

しかし、このコードは動作します:

public static String screenshot(){ 
     try { 
      Robot robot = new Robot(); 
      String format = "jpg"; 
      String fileName = "XXX." + format; 
      Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()); 
      BufferedImage screenFullImage = robot.createScreenCapture(screenRect); 
      ImageIO.write(screenFullImage, format, new File("C:\\temp\\" + fileName)); 
      System.out.println("Success"); 
      return outDir + fileName; 
     } catch (AWTException | IOException e) { 
      e.printStackTrace(); 
     } 

     return null; 
    } 

私はここで間違って何をしているのですか?

+0

あなたの 'C'ドライバにはフォルダ名が' temp'でしたか? –

+0

はい私はそのフォルダを持っています –

+0

どうすればそれを動作させることができますか? '新しいファイル(" abc ")'? –

答えて

1

私はjavadocを見ました。問題はformatNameです。ドックはformatName - a String containg the informal name of the format. =>という形式では、ドット(。)は含めず、名前のみを含めるようにしてください。だからあなたのハードコードは正しいものを使っているのであなたのハードコードが動いているのですformatName

関連する問題