我正在尝试在属性文件中添加十六进制值,该值已存储但我可以看到“\”得到追加,这是我不想要的,
test.properties
#
#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文件中的输入和属性文件中的输出相同
答案 0 :(得分:1)
考虑以已知方式对十六进制值进行编码,并在C和Java中对它们进行解码。
一种技术是在十六进制值之前加上“0x”并使用全部大写的数字。 如果使用此技术,则需要某种方式来表示十六进制数的结束。 我建议使用空格字符('')或行尾。
使用此技术,您的属性将如下所示:
test=0xFEFE
字符串“Blam07kapow”,其中07是十六进制数字,如下所示:
Blam0x07 kapow
答案 1 :(得分:0)
Properties类存储:带有前面的\,以确保在使用load方法时它将再次加载正确的值。如果您希望稍后能够将此属性文件加载回java,那么我担心您的属性文件中存在转义字符。见java.util.Properties documentation