Java属性文件创建

Java属性文件创建,java,Java,我使用以下逻辑创建一个保存sql查询的属性文件。每次保存查询时,文件都会在查询中添加一个额外字符 String filePath = getServletContext().getInitParameter("file-upload"); Properties props = new Properties(); FileOutputStream fos = new FileOutputStream(""+filePath+"/cem_inventory.properti

我使用以下逻辑创建一个保存sql查询的属性文件。每次保存查询时,文件都会在查询中添加一个额外字符

    String filePath = getServletContext().getInitParameter("file-upload"); 
    Properties props = new Properties();
    FileOutputStream fos = new FileOutputStream(""+filePath+"/cem_inventory.properties");

    props.setProperty("query", select);

    props.store(fos, "Properties file generated from Java program");

    fos.close();
查询的输出应为:
SELECT*FROM CEM_INVENTORY_TEMP,其中1=1,状态为('Deployed')


但我得到的是
SELECT*FROM CEM_INVENTORY_TEMP,其中1\=1,状态为('Deployed')

在=符号之前出现反斜杠的原因是=符号是保留字符。Java仍然允许您在数据中使用这些字符,而反斜杠是它的表达方式:“这是一个特殊字符,只需将其视为文本而不是其他!”。当您读回文件时,Java不会在最后一个字符串中包含此反斜杠。

一个片段不完整
=
是属性文件(key=value)中的保留字符,您不能在这里使用纯文本吗?但是当您读回文件时会发生什么?正如RC提到的,它正在被转义,我认为当您再次使用
属性
读取它时,这可能是正常的。但是为什么不;你不能保存在常规文本文件中吗?你看到的是正常和正确的行为。实际字符仍然是
=
;某些字符可以(或必须)在属性文件中转义。看见