添加到java方法保存的文件中的不需要的反斜杠

时间:2014-05-10 12:49:00

标签: java properties fileoutputstream

在我的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

任何人都可以告诉我如何避免包含反斜杠?

1 个答案:

答案 0 :(得分:1)

它正在做正确的事情 - 你正在保存一个属性文件,它使用反斜杠来逃避冒号之类的事情。来自documentation for Properties.store

  

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

如果您使用Properties.load加载属性文件,则会在Properties对象中返回原始字符串。

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