的ImageIO不保存截图

问题描述:

我试图让我的桌面截图,并将其保存在特定的文件夹,为此,我写了下面的方法:的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”)'? –

我已经看到了javadoc。这个问题是关于formatName,如DOC说:(。)formatName - a String containg the informal name of the format. =>意味着你的格式应该只包含名称,不包括点。所以这就是为什么你的硬编码运行,因为使用正确的formatName