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

将类路径文件名转换为真实文件名

朱慈
2023-03-14
问题内容

如何将类路径上的文件名转换为真实文件名?

例如,假设目录"C:\workspace\project\target\classes"位于您的类路径中。该目录中有一个文件,例如info.properties

仅给出字符串,如何确定(运行时)info.properties文件的绝对文件路径"info.properties"

结果将是类似"C:\workspace\project\target\classes\info.properties"

为什么这有用?编写单元测试时,您可能想访问捆绑在测试资源(src/main/resources)中的文件,但正在使用需要真实文件名而不是相对类路径引用的第三方库或其他系统。

注意:我已经亲自回答了这个问题,因为我觉得这是一个有用的技巧,但似乎以前没有人问过这个问题。


问题答案:

结合使用ClassLoader.getResource()和URL.getFile()

URL url = Thread.currentThread().getContextClassLoader().getResource( resource );
if( url == null ){
    throw new RuntimeException( "Cannot find resource on classpath: '" + resource + "'" );
}
String file = url.getFile();

Windows注意: 在以上示例中,实际结果为

"/C:/workspace/project/target/classes/info.properties"

如果您需要类似Windows的路径(即"C:\workspace\..."),请使用:

String nativeFilename = new File(file).getPath();


 类似资料:
  • 我在尝试选择文件时获得URI: /外部/文件/15499 我如何将它转换成真实的文件路径? 注意:我阅读了以下主题: null

  • 我想将 xml 文件转换为路径。 例如,我有一个xml文件,其中包含: 我想要的结果是这样的: Person.name = 测试, person . address . address 1 = Test。 有什么解决办法能让我这么做吗?

  • 我有一个应用程序,可以用相机拍摄视频。我可以获取视频的文件路径,但我需要它作为Uri。 我得到的文件路径: 我需要的是这样的: 这是我的密码。 我需要一个Uri从字符串变量。

  • 问题内容: 在WeasyPrint的公共API中,我接受HTML输入的文件名(除其他类型外)。任何与内置文件一起使用的文件名都可以使用,但是我需要将其转换为方案中的URL,然后再将其传递给。 (所有内容在内部都是URL形式。我需要为文档提供一个“基本URL”,以便使用来解析相对URL引用。) urllib.pathname2url是一个开始: 将路径名路径从路径的本地语法转换为URL的路径组件中使

  • 问题内容: 我如何从一个指向那个? 问题答案: 以下代码对我有用(基于[如何从jar中仅获取jarURL:URL中包含“!”和jar中的特定文件?](http://codingdict.com/questions/148394):

  • 我有一个Spring批处理过程,可以编写一个。txt文件。它工作得很好,除了一件事。当它在调度器(zena)上运行时,输出文件会被写入错误的位置,因为我将路径设置为相对路径。以下是我如何在FlatFileItemWriter中指定输出文件的位置: 当我在没有调度程序的情况下运行时,文件会写入正确的目录: 但当我在调度程序上运行时,文件会被写入: 我尝试使用classPathResource: 但是