gpt4 book ai didi

Java - 写入文件时按字面意思转义反斜杠

转载 作者:行者123 更新时间:2023-11-30 01:49:33 24 4
gpt4 key购买 nike

我想将 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com