【问题标题】:Saving path in String在字符串中保存路径
【发布时间】:2015-09-27 16:06:50
【问题描述】:
private static final String BasePath = "/home/rafael/pesquisa/ImageSimilarity";

我正在开发一个图像比较程序,我从某个地方找到了这行代码。但是在上述情况下,路径是为 linux 系统设置的,作为 Windows 用户,我想为 Windows 设备设置路径。所以我把路径改成了

private static final String BasePath ="C:\imgs"

但这似乎是一个错误,我猜是正斜杠和反斜杠。在我的情况下如何设置路径字符串?任何帮助将不胜感激。

【问题讨论】:

  • 您也可以在 Windows 中使用正斜杠。使用C:/imgs。或者通过添加另一个反斜杠来转义反斜杠。 "\" 是 Java 中字符串的转义字符。所以C:\\imgs 也应该这样做。
  • 它会产生与 C:\imgs 相同的结果吗?
  • 命名约定:你应该命名一个像 BASE_PATH 这样的常量
  • 完整解释是here

标签: java


【解决方案1】:

您需要转义 windows 路径中的反斜杠,如下所示:

private static final String BasePath = "C:\\imgs";

您也可以只使用正斜杠:

private static final String BasePath = "C:/imgs";

【讨论】:

    【解决方案2】:

    你需要改变

    private static final String BasePath ="C:\imgs"
    

    private static final String BasePath ="C:\\imgs"
    

    单个 \ 是一个转义字符,会导致“无效转义字符”问题,这是因为 \i 应该是一个转义文字。 (幸运的是,它不是。)\\ 是单个 \ 的有效转义文字,因此它解决了问题。

    继续问题场景,如果你有例如

     String path = "c:\noproblem";
    

    那么编译就没有问题了,因为 \n 是一个有效的转义字符。 (但它仍然会导致其他问题。)

    但更好的是,使用 File.separator。

    来自Java Documentation

    默认名称分隔符由系统属性定义 file.separator,并在公共静态字段中可用 这个类的separator和separatorChar。当路径名字符串是 转换为抽象路径名,其中的名称可能是 由默认名称分隔符或任何其他分隔符分隔 底层系统支持的名称分隔符。

    因此 - 它将改变操作系统所需的分隔符的使用。

    看看How to construct a file path in java

    【讨论】:

      【解决方案3】:

      你的东西在你使用时应该可以工作

      private static final String BasePath = "C:\\imgs";
      

      注意:

      虽然您仍然可以使用正斜杠来实现这​​一点,但我建议您使用 File.separator 以使其清楚。

      【讨论】:

        【解决方案4】:

        您可以使用File.separator,然后您不必担心特定于平台的路径分隔符。例如下面

        private static final String BASE_PATH = "C:" + File.separator + "imgs";
        

        更多详情可以查看here

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多