在我的spring项目中,我的一个服务类使用此方法在磁盘中保存名为database.properties的文件:
public void create_properties(String maquina, String usuario, String senha) {
System.out.println("create_properties");
Properties props = new Properties();
props.setProperty("jdbc.Classname", "org.postgresql.Driver");
props.setProperty("jdbc.url", "jdbc:postgresql://"+maquina+"/horario" );
props.setProperty("jdbc.user", usuario );
props.setProperty("jdbc.pass", senha );
props.setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
props.setProperty("hibernate.show_sql", "false");
props.setProperty("hibernate.hbm2ddl.auto", "validate");
FileOutputStream fos;
try {
fos = new FileOutputStream( "database.properties" );
props.store( fos, "propriedades" );
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
我的问题是属性jdbc:url应该是这样的:
jdbc:postgresql://localhost:5432/horario
但是节省的是:
jdbc\:postgresql\://localhost\:5432/horario
任何人都可以告诉我如何避免包含反斜杠?
答案 0 :(得分:1)
它正在做正确的事情 - 你正在保存一个属性文件,它使用反斜杠来逃避冒号之类的事情。来自documentation for Properties.store
:
然后写出此Properties表中的每个条目,每行一个。对于每个条目,写入密钥字符串,然后是ASCII =,然后是关联的元素字符串。对于键,所有空格字符都使用前面的\字符编写。对于元素,前导空格字符,但不是嵌入或尾随空格字符,使用前面的\字符编写。键和元素字符#,!,=和:使用前面的反斜杠写入,以确保它们已正确加载。
如果您使用Properties.load
加载属性文件,则会在Properties
对象中返回原始字符串。
如果您不想将值存储在属性文件中,请使用Writer
并直接编写字符串。