从资源中获取文件名(带路径)

3
我正在使用 camel 创建一些路由。
我有一个文件在资源文件夹中,我只想要文件路径+名称,而不是内容。
当我使用:
from(URI)
 .log("resource:classpath:llave.txt")

我已获得llave.txt的内容,但我需要类似于

C:\something\llave.txt

谢谢!!

编辑以澄清:我不需要从文件端点获取文件信息(此外,使用文件语言或交换的标头很容易获取该信息)。

我需要位于项目中的资源文件夹中的文件信息。


这没关系。在这种情况下我不会使用它。 - Desenfoque
你看了一下头文件里面有没有什么东西吗? - Simon Martinelli
如果URI使用Camel文件组件,则各种文件信息将存储为标头,包括相对路径、绝对路径、文件大小等。 - Claus Ibsen
3个回答

3
获取文件:
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("llave.txt").getFile());

获取路径:

//full path ( including the file ) 
String absolutePath = file.getAbsolutePath();
// path only
String filePath = absolutePath.
    substring(0, absolutePath.lastIndexOf(File.separator));

2

在调用文件组件后,您可以使用Camel设置的标头访问路径:

from(URI)
 .log("$simple{headers.CamelFileAbsolutePath}")

您可以在此处阅读有关文件组件的更多信息: http://camel.apache.org/file2.html

0

使用java.nio,您可以获取完整路径:

String fullPath = Paths.get(getClass().getResource("llave.txt").toURI()).toString();

以及文件名:

String fileName = Paths.get(getClass().getResource("llave.txt").toURI()).getFileName();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接