的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;
}
什么我错在这里做什么?
答
我已经看到了javadoc。这个问题是关于formatName
,如DOC说:(。)formatName - a String containg the informal name of the format.
=>意味着你的格式应该只包含名称,不包括点。所以这就是为什么你的硬编码运行,因为使用正确的formatName
你有你'C'的驱动程序文件夹名称'temp'你的硬编码? –
是的,我确实有这个文件夹 –
你怎么能使它工作? '新文件(“abc”)'? –