【问题标题】:Not able to read Properties File using Backward Slash无法使用反斜杠读取属性文件
【发布时间】:2014-12-23 16:04:38
【问题描述】:

我无法使用 Java 读取属性文件。这意味着在此属性文件中,反斜杠不起作用。它显示为,此目标:C:Usersxxx.a

String filename="D://Desktop//xxx.properties";
is = new FileInputStream(filename);
Properties prop=new Properties();
prop.load(is);
System.out.println("destination :"+prop.getProperty("destination"));

属性文件是:

destination=C:\Users\xxx.a\

结果显示

destination :C:Usersxxx.a

但我想显示目的地:C:\Usersxxx.a\

你能推荐我吗?

【问题讨论】:

标签: java string properties


【解决方案1】:

您需要在属性文件中添加两个斜杠,如下所示: destination=C:\\Users\\xxx.a\\

另一种方法是交换属性文件中的斜线: destination=C:/Users/xxx.a/

\ 是转义字符,因此被删除。添加两个斜杠会转义第一个,因此只剩下一个。

【讨论】:

  • 感谢您的回复...但是我只需要添加 C:\Users\xxx.a\ 如果我们添加双斜杠就可以了...
  • 如果您在属性文件中添加两个斜线,它将只为您的目标显示一个斜线。属性文件中只有一个斜杠,它被转义,所以什么都没有显示。属性文件中有两个斜杠意味着第一个被转义,第二个将被使用,因此只出现一个。
  • 如果我们在属性中添加 2 个斜杠,它会在目标单中显示。是的,很好。但我不想在属性文件中添加双斜杠
【解决方案2】:

\ 字符在许多编程语言中用作“转义字符”。它为文本中的下一个字符赋予特殊含义。例如,\n 编码特殊字符“换行符”。

使用\\ 而不是\。这向解析器表明您的意思是实际符号,而不是转义字符。例如,您的属性值为:

destination=C:\\Users\\xxx.a\\

【讨论】:

  • 我只需要在属性文件中添加单斜杠。如果我们添加双斜杠..它正在工作..
  • @mdrazi \\ 被解释为实际属性中的单个反斜杠字符。您的最终属性值将在每个目录之间仅包含一个“\”。
【解决方案3】:

\ 是转义字符。

正斜杠/在Unix环境中用作路径分隔符。
反斜杠\在Windows环境中用作路径分隔符。
因此,您需要使用\\/ 作为路径分隔符。你不能在java中直接使用\。因为,它是一个转义字符。

因此,您需要在属性文件中进行更改以使您的程序正常工作。 在属性文件中使用/\\ 作为路径分隔符。

在您的情况下,您希望显示为 C:\Users\xxx.a\
所以,在你的属性文件中使用C:\\Users\\xxx.a\\ 得到输出为C:\Users\xxx.a\

【讨论】:

  • 不,我不想添加双斜杠,如果我添加它会在结果中显示为 C:\Users\xxx.a\ 。还有其他编程方式吗?
【解决方案4】:

你可以把它存储在 D:/Desktop/xxx.properties 中

destination=C:/Users/xxx.a/

并用一个反斜杠显示它

String fileName = prop.getProperty("destination");
System.out.println("destination: " + fileName); // shows: C:/Users/xxx.a/
System.out.println("destination: " + Paths.get(fileName)); // shows: C:\Users\xxx.a

【讨论】:

    猜你喜欢
    • 2019-06-23
    • 2022-01-05
    • 1970-01-01
    • 2021-11-19
    • 2022-08-04
    • 2020-08-24
    相关资源
    最近更新 更多