【问题标题】:Why am I getting (The system cannot find the path specified)为什么我得到(系统找不到指定的路径)
【发布时间】:2015-12-04 15:52:22
【问题描述】:

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

不工作的代码 (1)

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

工作代码(二)

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");

【问题讨论】:

    标签: java


    【解决方案1】:

    就像我之前所说的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() 以便您确切地知道他们指向的位置。

    你只是没有正确构建路径,正确只有你自己知道。

    【讨论】:

      【解决方案2】:

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

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

      当图像在文件夹中时,蜡染无法解析此路径,这意味着假设image.svg 在文件夹images 中,则以下代码将不起作用:

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

      但如果同一张图片不在文件夹中,而是在项目所在的主文件夹中,它将起作用:

      jsvgcanvas.setURI("image.svg");
      

      【讨论】:

        猜你喜欢
        • 2019-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-23
        • 2018-12-12
        • 2016-04-23
        • 2017-01-04
        相关资源
        最近更新 更多