作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将 URL 存储在属性文件中。这是网址:
jdbc\:sqlserver\://dummydata\\SHARED
当用 Java 编程时,我显然需要转义反斜杠。所以我的代码最终看起来像这样
properties.setProperty("db", "jdbc\\:sqlserver\\://dummydata\\\\SHARED");
问题在于,属性文件正在保存字符串 URL,并包含用于转义的反斜杠,这是一个不正确的 URL。我希望 Java 能够解释用于转义的反斜杠,以便只保存正确的 URL。有没有办法实现这个目标?
最佳答案
您是正确的,带有 :
的属性值需要转义 .properties
文本文件中的冒号,但您是不直接写入该文本文件。
您正在使用 setProperty()
将值赋予 Properties
对象,并可能使用 将其写入文本文件 store()
,store()
方法将根据需要转义值。
您应该为属性
提供所需的值,并忘记文本文件的编码规则。 Properties
将处理所有需要的编码。由于您要给出的值是jdbc:sqlserver://dummydata\SHARED
,因此您编写一个字符串文字 "jdbc:sqlserver://dummydata\\共享”
示例
String db = "jdbc:sqlserver://dummydata\\SHARED";
System.out.println(db); // To see actual string value
Properties properties = new Properties();
properties.setProperty("db", db);
try (FileWriter out = new FileWriter("test.properties")) {
properties.store(out, null);
}
输出
jdbc:sqlserver://dummydata\SHARED
test.properties 的内容
#Tue Jun 11 11:54:24 EDT 2019
db=jdbc\:sqlserver\://dummydata\\SHARED
如您所见,store()
方法已为您转义了 :
和 \
。
如果您将属性另存为 XML 文件,则无需转义任何内容,Properties
也不会。
示例
try (FileOutputStream out = new FileOutputStream("test.xml")) {
properties.storeToXML(out, null);
}
test.xml 的内容
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<entry key="db">jdbc:sqlserver://dummydata\SHARED</entry>
</properties>
关于Java - 写入文件时按字面意思转义反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56547175/
我是一名优秀的程序员,十分优秀!