以下是我使用的一些代码示例,但无法理解为什么会发生这种情况。
不工作代码(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");
答案 0 :(得分:2)
就像我在FileNotFoundException
之前所说的那样简单,因为文件现在就在你所看到的位置。
您的工作代码与无效代码是无法等效的,仍然没有进行任何调试以查看实际路径错误指定实际上是。
不是将链式方法调用嵌入到方法中,而是将结果分配给引用变量并对其进行调试以查看其实际值是什么,这不是您认为的肯定。
至少System.out.println()
他们的Path.toAbsolutePath()
,您会看到他们为什么不正确以及为什么我应该暂时关闭它。
.
表示当前工作目录
../..
表示来自.
images
表示./images
,../../images
表示转up two directories from
。and 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");