当前位置: 首页 > 面试题库 >

给定一个类路径资源,有没有办法获取具有/包含它的java.io.File对象?

韩彦君
2023-03-14
问题内容

如果我在类路径上有资源,则都可以按流的方式很好地加载它,甚至还有它的URL表示。不幸的是,Url的某些实现未正确实现lastModified。

我想要的是在类路径中找到某个路径,然后将其解析为磁盘上的文件-
如果在jar中,则指向该jar的File就可以了。然后,我可以从File对象而不是URL获取lastModified,这将更加有用。


问题答案:

大致说来:

    URL url = this.getClass().getResource(myResource);
    String fileName;
    if (url.getProtocol().equals("file")) {
        fileName = url.getFile();        
    } else if (url.getProtocol().equals("jar")) {
        JarURLConnection jarUrl = (JarURLConnection) url.openConnection();
        fileName = jarUrl.getJarFile().getName();            
    } else {
        throw new IllegalArgumentException("Not a file");
    }
    File file = new File(fileName);
    long lastModified = file.lastModified();

应该做你想做的。您将需要捕获IOException。



 类似资料:
  • 我有一个需求,我想找到运行的jar中的jar的路径。假设有一个名为example-1.0.0.jar的罐子在一个名为main-1.0.0.jar.的运行罐子里,我想知道运行罐子里存在的罐子的路径。 编辑1:例如,jar是项目中的一个依赖项。例如,假设我的项目中有一个log4j依赖项,我想知道log4j jar在类中的路径。我怎样才能找到路?

  • 我试图构建一个资源包,从数据库而不是属性文件获取其消息。我做了一些扩展ResourceBundle的测试,ResourceBundle。控件和ListResourceBundle,我想我走的是正确的道路。 当我需要查询实际数据库以从我的ResourceBundle实现中获取消息时,我就到达了一个点。我想利用EJB层上的所有JPA架构体系来运行查询并实例化存储密钥、消息和区域设置的对象。因此,如果我

  • 和我的Gradle构建文件: 如何删除警告?

  • 有没有办法列出AWS中的所有资源?对于所有区域,所有资源...例如列出所有EC2实例、所有VPC、API Gateway中的所有API等...我想列出我帐户的所有资源,因为我很难找到我现在可以放弃的资源。

  • 我有一个XSD,它定义了几个复杂类型的层次结构(每个类型都是另一个的子类型)。 前任: 我正在寻找只导入复杂类型到列表中。我想我可能可以使用ApacheDigester来做这件事,但是我想知道是否有一些方法可以用JAXB来做这件事。直接解组到对象,然后使用循环来提取缺陷类型是可行的,但似乎需要大量额外的工作。 本质上,我希望能够想出一个解决方案,可以做到如下几点: 我可能会将整个XML文件加载到一

  • 问题内容: 假设我们具有以下类层次结构: 如果像这样在ClassB上浏览 dict ,我只会看到bar属性: 输出为bar 我可以运用自己的方式来获取属性,不仅是指定类型,还包括其祖先。但是,我的问题是python是否已经有一种方法可以在不重新发明轮子的情况下做到这一点。 如下运行我的代码… …同时返回bar和foo。 请注意,我正在简化一些事情:名称冲突,在本例中可以使用dict时使用items