Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ImageIO不保存屏幕截图_Java_Screenshot_Awtrobot - Fatal编程技术网

Java ImageIO不保存屏幕截图

Java ImageIO不保存屏幕截图,java,screenshot,awtrobot,Java,Screenshot,Awtrobot,我正在尝试获取桌面截图并将其保存在特定文件夹中,为此,我编写了以下方法: class Test(){ public static String screenshot(String outDir){ try { Robot robot = new Robot(); String format = ".png"; String fileName = String.valu

我正在尝试获取桌面截图并将其保存在特定文件夹中,为此,我编写了以下方法:

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;
    }

我在这里做错了什么?

我已经看到了。问题在于formatName,正如doc所说:formatName-一个包含格式非正式名称的字符串。=>表示您的格式应仅包含名称,而不包含点。。这就是为什么您的硬代码会运行,因为您的硬代码使用了正确的格式名

您的C驱动程序中有文件夹名temp吗?是的,我有该文件夹您如何使其工作?新文件ABC?我编辑了我的问题,我也输入了工作代码