为什么我得到(系统找不到指定的路径)

时间:2015-12-04 15:52:23

标签: java

以下是我使用的一些代码示例,但无法理解为什么会发生这种情况。

  

不工作代码(1)

Files.copy(Paths.get(path), Paths.get(".").resolve("test.svg"), StandardCopyOption.REPLACE_EXISTING);
canvas.setURI("test.svg");
  

工作代码(2)

Files.copy(Paths.get(path), Paths.get(".").resolve("test.svg"), StandardCopyOption.REPLACE_EXISTING);
canvas.setURI("../../test.svg");
  

不工作代码(3)

Files.copy(Paths.get(path), Paths.get("images").resolve("test.svg"), StandardCopyOption.REPLACE_EXISTING);
canvas.setURI("../../images/test.svg");

2 个答案:

答案 0 :(得分:2)

就像我在FileNotFoundException之前所说的那样简单,因为文件现在就在你所看到的位置。

您的工作代码与无效代码是无法等效的,仍然没有进行任何调试以查看实际路径错误指定实际上是。

不是将链式方法调用嵌入到方法中,而是将结果分配给引用变量并对其进行调试以查看其实际值是什么,这不是您认为的肯定。

至少System.out.println()他们的Path.toAbsolutePath(),您会看到他们为什么不正确以及为什么我应该暂时关闭它。

相对目录

.表示当前工作目录

../..表示来自.

的两个目录

images表示./images../../images表示转up two directories fromand then use ./ images`

Paths.get(".").resolve("test.svg")将为./test.svg

Paths.get("images").resolve("test.svg")将为./images/test.svg

./test.svg显然./images/test.svg相同

这就是为什么你应该总是使用Path.toAbsolutePath(),这样你才能确切地知道他们指向的位置。

您只是没有正确构建路径,正确只能告诉您。

答案 1 :(得分:0)

好吧,以防其他人有同样的问题,

它与文件的大小无关。 问题是在某些svg文件中有一些clip-path属性。

当图像在文件夹内时,蜡染无法解析此路径,意味着假设image.svg位于文件夹images内,以下代码将无效:

jsvgcanvas.setURI("images/image.svg");

但是如果相同的图像不在文件夹中,但是在项目所在的主文件夹内,它将起作用:

jsvgcanvas.setURI("image.svg");