Java:为机器人屏幕截图生成随机文件名

标签 java

目前,我正在尝试使用机器人功能创建屏幕截图。现在我已经可以使用按钮进行屏幕截图并将其保存为图像形式。现在我想做同样的事情,但我想生成不同的文件名,例如截图1.png,截图2.png。我可以知道如何使用 for 循环随机生成数字吗?

这是我当前的 Java 工作代码:

private void jbtnCaptureActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        try {
            Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
            Robot ro = new Robot();
            BufferedImage capture = ro.createScreenCapture(screenRect);
            File f;
            f = new File("myimage1.jpg");                         
            ImageIO.write(capture, "jpg", f);
            System.out.println("Success");



        } catch (Exception e){
            System.out.println("Unable to capture the screen" + e);
        }

}

有人可以帮我解决这个问题吗?提前致谢。

最佳答案

我猜每个屏幕捕获都是通过某种按钮右键单击触发的(而不是循环中的多个捕获)?

最直接的方法是保留一个整数作为文件名的运行序列:

private void jbtnCaptureActionPerformed(java.awt.event.ActionEvent evt) {
    .....
            File f = new File("myimage" + (this.filenameSeq++) + .jpg");
    ......
}
<小时/>

而且,如果您的捕获不是非常频繁地生成(例如每秒数百个文件),您可以采取另一种方法来避免保持运行序列。您可以根据当前时间生成文件名,并检查文件是否存在。如果存在,则继续附加序列号,直到发现文件不存在。在伪代码中:

String filenameBase = "myImage";
String currentTimestamp = new SimpleDateFormat("yyyymmddHHMMss").format(now());
File f = new File(filenameBase + currentTimestamp +  ".png");
for (int i = 0; f.exists(); i++) {
    f = new File(filenameBase + currentTimestamp +  "-" + i + ".png");
}
// so here, you will have a filename which is not yet exists in your filessystem

关于Java:为机器人屏幕截图生成随机文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37266372/

相关文章:

java - 使用 Android App 在 Raspberry Pi 上执行 SSH 命令

java - 显示随机访问文件中的信息

java - 我想将步骤 1 中的数据传递给步骤 2 的读取器

java - 我如何调用该程序中的方法?

java - 使用 Java (Jackson) 读取 JSON 中嵌套键的值

Java HashObjObjMap<K, V> 与 HashMap<K, V>

java - java中有类似PushSharp的应用吗?

java - Selenium 测试日期输入时遇到问题,其中输入有最大和最小日期

java - 如何让 fragment 被正确查看

java - 如何更改 JavaFX 8 警报对话框中是/否按钮的文本