因此,在我的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))
的方法,如果我也将获取资源目录的路径作为前缀,则可以正常使用从项目的根目录开始)。想要使用资源,而不必使用此替代方法。