Java:使用资源中的反斜杠处理文件/目录

时间:2019-06-21 15:09:57

标签: java resources filenames backslash

因此,在我的FS(Linux机器,以防万一)上,我的目录实际上与完整的Windows路径匹配(不能更改,这是要求的一部分):

$ ls -l some-local-dir/
total 8
drwxrwxr-x 2 spiderman spiderman 4096 jun 21 08:30 'C:\desktop\some-dir'

所以,some-local-dir,这是我的Linux机器上的普通普通目录...,如您所见,它显示了一个唯一的目录,其中的名称由 full Windows路径。 bash没问题。我可以毫无问题地进行操作(复制,将内容放入其中等)。

在Java上,我可以使用File查看文件和内容,将 \ 替换为 \\ 即可, 。但是,当我尝试使用相同的技巧来使用Resources.getResource时,它将不起作用:

java.lang.IllegalArgumentException: resource path-inside-resources not found

我尝试用 \ 替换字符串上的 \\ 。甚至 \\\ (以防万一)但它似乎仍然无法处理目录名称。

有趣的是,如果我看一下IntelliJ,我最多可以看到资源中的some-local-dir,但是里面什么也没显示(我希望能在其中看到专门命名的目录)

WORKAROUND 作为一种临时的解决方法,为了进行测试,我将完全跳过使用Resources的方法,并且会使用Files.readAllBytes(Paths.get(crazy-path))的方法,如果我也将获取资源目录的路径作为前缀,则可以正常使用从项目的根目录开始)。想要使用资源,而不必使用此替代方法。

0 个答案:

没有答案