如何打开文件而不考虑它';使用java代码的s扩展?

如何打开文件而不考虑它';使用java代码的s扩展?,java,Java,我通常使用以下代码在java中打开文件: try { File file = new File("C:\\justifadhesion\\justif.jpg"); Desktop desktop = Desktop.getDesktop(); desktop.open(file); } catch (IOException ex) { Logger.getLogger(G.clas

我通常使用以下代码在java中打开文件:

try {

            File file = new File("C:\\justifadhesion\\justif.jpg");
            Desktop desktop = Desktop.getDesktop();
            desktop.open(file);
        } catch (IOException ex) {
            Logger.getLogger(G.class.getName()).log(Level.SEVERE, null, ex);
        }
它是有效的,但在某些情况下,我可以确定文件是jpg还是png。有没有一种方法可以修改我的代码,这样它就可以打开文件,而无需我在路径中精确指定文件的扩展名?

您可以使用file.list()枚举文件夹中的所有文件,然后查看其中是否有JPG或PNG。有关一些示例,请参见

扩展名是文件名的一部分,因此您需要将其包括在内(有些例外,如.exe、.bat或.com)

使用嵌套的
try catch
块。最初尝试获取
jpg
,如果不起作用,则获取
png

无需列出所有文件,因为您只有两个选项


如果您有两个以上的扩展名,那么列出目录并查找文件将是一个更好的选择。

您可以按如下方式管理它:

File file = new File("C:\\justifadhesion\\justif.jpg");
if (!file.exists()) {
    file = new File("C:\\justifadhesion\\justif.png");
    if (file.exists()) {
        Desktop desktop = Desktop.getDesktop();
        try {
            desktop.open(file);
            //...other business logic
        } catch (IOException e) {
            Logger.getLogger(G.class.getName()).log(Level.SEVERE, null, ex);
        }
    } else {
        Logger.getLogger(G.class.getName()).log(Level.SEVERE, null, "The file does not exist");
    }
}

说明:首先检查具有一个扩展名的文件,例如
.jpg
,如果不存在,则检查具有另一个扩展名的文件(在本例中为
.png
)。如果存在,请尝试打开它(即在
try…catch
block中打开它),否则记录文件不存在的错误

可能使用正则表达式?可能的格式只有jpg和png吗?正则表达式不应该在这种情况下工作。是的,jpg和png是这种情况下唯一可能的格式。欢迎链接到解决方案,但请确保您的答案在没有它的情况下是有用的:这样您的其他用户就会知道它是什么以及它为什么存在,然后引用你链接到的页面最相关的部分,以防目标页面不可用。“您可以使用File.list()枚举文件夹中的所有文件,然后查看其中是否有JPG或PNG。”-您不了解其中的哪部分?您在引号中写的部分不符合答案(imo)。你的大部分答案取决于链接,如果链接在将来失败,那么你的答案将是无用的。一个高质量的答案将有一些代码来实现问题中的要求。我希望任何StackOverflow用户都能够找到特定类和函数的Javadoc,给定类和函数名。我无法为定义模糊的OP问题提供代码。如果您认为该问题定义模糊,请留下评论(和/或否决该问题),或投票关闭该问题。这将不起作用,因为新文件(“path_that_not_exist.jpg”)不会抛出filenotfoundexception新文件(xxx)不会引发任何异常-否则您将无法创建文件。如果使用“if(!file.exists())file=”设置秒,则不需要内部try块value@DuncG如果第二个文件不存在,Desktop.open将抛出IllegalArgumentException。
File file = new File("C:\\justifadhesion\\justif.jpg");
if (!file.exists()) {
    file = new File("C:\\justifadhesion\\justif.png");
    if (file.exists()) {
        Desktop desktop = Desktop.getDesktop();
        try {
            desktop.open(file);
            //...other business logic
        } catch (IOException e) {
            Logger.getLogger(G.class.getName()).log(Level.SEVERE, null, ex);
        }
    } else {
        Logger.getLogger(G.class.getName()).log(Level.SEVERE, null, "The file does not exist");
    }
}