2014-05-10 30 views
0

在我的春天项目,我的服务类中的一个具有这种方法来保存文件名为database.properties磁盘:不需要反斜线添加到文件中保存的Java方法

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 :网址应该是这样的:

jdbc:postgresql://localhost:5432/horario 

但什么是被保存是这样的:

jdbc\:postgresql\://localhost\:5432/horario 

任何CA ñ告诉我如何避免这个反斜杠被包括在内?

回答

1

它正在做正确的事情 - 您正在保存一个属性文件,它使用反斜杠转义冒号等冒号。从documentation for Properties.store

然后写出此属性表中的每个条目,每行一个。对于每个条目,写入关键字符串,然后是ASCII =,然后是关联的元素字符串。对于关键字,所有空格字符都用前面的\字符书写。对于元素,前导空格字符,但不包含嵌入或尾随空格字符,用前面的\字符书写。键和元素字符#,!,=和:用前面的反斜杠写入,以确保它们正确加载。

如果加载性能使用Properties.load文件,你会得到原始的字符串回到Properties对象。

如果您不想将值存储在属性文件中,请使用Writer并直接写入字符串。

相关问题