Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
程序添加'\';在';之前:';在Java中编写.properties文件时_Java_Postgresql_Properties_Io - Fatal编程技术网

程序添加'\';在';之前:';在Java中编写.properties文件时

程序添加'\';在';之前:';在Java中编写.properties文件时,java,postgresql,properties,io,Java,Postgresql,Properties,Io,我正在尝试更新程序中的database.properties文件。然而, Java似乎在我的属性文件中添加了额外的字符 这是我的一段代码 Properties props = new Properties(); String propsFileName = "src/resources/properties/" + "database.properties"; String[] property = new String[4]; proper

我正在尝试更新程序中的database.properties文件。然而, Java似乎在我的属性文件中添加了额外的字符

这是我的一段代码

Properties props = new Properties();

        String propsFileName = "src/resources/properties/" + "database.properties";

        String[] property = new String[4];

        property[0] = "database.properties";
        property[1] = url.getText();
        property[2] = username.getText();
        property[3] = password.getText();

            try {

                FileInputStream configStream = new FileInputStream(propsFileName);
                props.load(configStream);
                configStream.close();

                props.setProperty("jdbc.driverClassName", Commons.driverClassName);
                props.setProperty("jdbc.url", property[1]);
                props.setProperty("jdbc.username", property[2]);
                props.setProperty("jdbc.password", property[3]);
                props.setProperty("jdbc.comment", comments.getText());

                FileOutputStream output = new FileOutputStream(propsFileName);
                props.store(output, null);
                output.close();

            } catch (IOException ex) {
                ex.printStackTrace();
            }
我的控制台上有一个输出,检查我是否得到了我想要的字符串

Properties=org.postgresql.Driver, jdbc:postgresql://192.168.1.1:1234/db,用户名, 密码,空程序运行于2017年6月23日星期五16:00:37 PHT由 用户=xngapp234

然而,在我的database.properties文件中,我得到了这个输出

jdbc.url=jdbc\:postgresql\://192.168.1.1\:1234/db
jdbc.username=username
jdbc.password=password
jdbc.comment=
jdbc.driverClassName=org.postgresql.Driver
它在“:”之前加上“\”,这总是给我一个错误。感谢您的帮助。
谢谢

如果您试图从Java程序存储和加载属性,那么一切都正常工作!您的代码显示,读取url时不带反斜杠,就像存储url一样

正如Berger所写,这是java.properties文件中的正常转义。这记录在Properties.store()的中:

[…]键和元素字符#,!,=,和:都是用a写的 前面的反斜杠,以确保正确加载。[……]

如果您试图使用Properties类来编写一个文件供非Java程序使用,那么您就运气不佳,因为这不是这个类的目的。你需要用另一个图书馆来做这件事

javadoc声明

Properties类表示一组持久的属性


“.properties”-格式只是一组属性的一种表示形式(XML格式是另一种格式)。

如果您试图从Java程序存储和加载属性,那么一切都正常工作!您的代码显示,读取url时不带反斜杠,就像存储url一样

正如Berger所写,这是java.properties文件中的正常转义。这记录在Properties.store()的中:

[…]键和元素字符#,!,=,和:都是用a写的 前面的反斜杠,以确保正确加载。[……]

如果您试图使用Properties类来编写一个文件供非Java程序使用,那么您就运气不佳,因为这不是这个类的目的。你需要用另一个图书馆来做这件事

javadoc声明

Properties类表示一组持久的属性


“.properties”-格式只是一组属性的一种表示形式(XML格式是另一种格式)。

\:
中是
\
而不是
之前的格式吗?不相关:您对该字符串数组的使用没有多大意义。它相当混乱您的代码。使用插槽0作为文件名不是一种好的样式,而其他3个插槽表示要打印到该文件中的值。如果是,请考虑使用<代码> map < /C> >:关键字表示属性名称、值以及值。或者干脆完全放下那个数组。它不会为您当前的代码添加任何值。问题是什么?为什么您认为是添加的反斜杠导致的?这是java属性文件中
的正常转义<代码>道具.加载应该检索正确的值。因此,真正的答案是:下次做一些研究;并研究您正在使用的类的javadoc;-)在
\:
中,
\
不是在
之前吗?不相关:您对该字符串数组的使用没有多大意义。它相当混乱您的代码。使用插槽0作为文件名不是一种好的样式,而其他3个插槽表示要打印到该文件中的值。如果是,请考虑使用<代码> map < /C> >:关键字表示属性名称、值以及值。或者干脆完全放下那个数组。它不会为您当前的代码添加任何值。问题是什么?为什么您认为是添加的反斜杠导致的?这是java属性文件中
的正常转义<代码>道具.加载应该检索正确的值。因此,真正的答案是:下次做一些研究;并研究您正在使用的类的javadoc;-)