1

我正在尝试在属性文件中添加十六进制值,该值正在被存储,但我可以看到附加了一个“\”,这是我不想要的,

测试属性

#
#Fri Jun 07 21:18:49 GMT+05:30 2013
test=fe\:fe

Java文件

public class PropertySave {
    private static File s_file;
    private static Properties s_properties = new Properties();
    public static void main(String[] args) {
        loadProperties();
        s_properties.setProperty("test", "fe:fe");
        saveProperties();
    }
    private static void saveProperties() {
        FileOutputStream fout = null;
        try {
            fout = new FileOutputStream(s_file);
            s_properties.store(fout, "");
        } catch (IOException ioe) {
            ioe.printStackTrace();
            System.exit(1);
        } finally {
            if (fout != null) {
                try {
                    fout.close();
                } catch (final IOException ioe2) {
                    ioe2.printStackTrace();
                    System.exit(1);
                }
            }
        }
    }
    private static void loadProperties() {
        s_file = new File("test.properties");
        if ((!s_file.exists()) || (!s_file.isFile())) {
            System.exit(1);
        }
        FileInputStream fin = null;
        try {
            fin = new FileInputStream(s_file);
            s_properties.load(fin);
        } catch (IOException ioe) {
            ioe.printStackTrace();
            System.exit(1);
        } finally {
            if (fin != null) {
                try {
                    fin.close();
                } catch (final IOException ioe2) {
                    ioe2.printStackTrace();
                    System.exit(1);
                }
            }
        }
    }
}

在 java 文件中s_properties.setProperty("test", "fe:fe"); 属性文件中的输出不同(test.properties)fe:fe我想忽略这个,因为这个属性文件是用“C”语言输入到其他系统的,因为我的东西不起作用,

我应该怎么做才能确保java文件中的输入和属性文件中的输出相同

4

2 回答 2

1

考虑以已知方式对十六进制值进行编码,并在 C 和 Java 中对其进行解码。

一种技术是在十六进制值之前加上“0x”并使用全部大写的数字。如果您使用这种技术,您将需要某种方式来表示十六进制数的结束。我建议使用空格字符 (' ') 或行尾。

使用这种技术,您的属性将如下所示:

test=0xFEFE

07 是十六进制数字的字符串“Blam07kapow”如下所示:

Blam0x07 kapow

于 2013-06-07T16:20:33.700 回答
0

Properties 类使用前面的 \ 存储 : 以确保在您使用 load 方法时它会再次加载正确的值。如果您希望稍后能够将此属性文件加载回java,那么恐怕您会被属性文件中的转义字符卡住。请参阅java.util.Properties 文档

于 2013-06-07T16:05:48.130 回答