Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.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 如何包括#&引用;在属性文件中'\#';逃逸不';行不通_Java_C#_Properties - Fatal编程技术网

Java 如何包括#&引用;在属性文件中'\#';逃逸不';行不通

Java 如何包括#&引用;在属性文件中'\#';逃逸不';行不通,java,c#,properties,Java,C#,Properties,我需要在属性文件中包含带#的值,但#用于属性文件中的注释行。我该怎么做 我想定义如下映射 someField[#]=someValue 但是#之后的任何内容都会被评论。 谢谢你的帮助。你可以用\来逃避\,比如 someField\#=1 这会让你{someField#=1}这样写: key\#1=value\#1 其他特殊字符如“=”、“:”的工作原理相同 Java代码: 写入属性: Properties p = new Properties(); p.load(PropertiesTes

我需要在属性文件中包含带#的值,但#用于属性文件中的注释行。我该怎么做

我想定义如下映射

someField[#]=someValue

但是
#
之后的任何内容都会被评论。 谢谢你的帮助。

你可以用
\
来逃避
\
,比如

someField\#=1
这会让你
{someField#=1}

这样写:

key\#1=value\#1
其他特殊字符如“=”、“:”的工作原理相同

Java代码:

  • 写入属性:

    Properties p =  new Properties();
    p.load(PropertiesTest.class.getResourceAsStream("prop.properties"));
    p.setProperty("key#=dsafw", "value $#@^$%@**^");
    p.setProperty("key#1", "value#1");
    p.store(new FileOutputStream(new File("../TEMP/prop.properties")), "write special property kvs");
    
    p.load(new FileInputStream(new File("../TEMP/prop.properties")));
    Enumeration<Object> keys = p.keys();
    while(keys.hasMoreElements()){
      String key = (String) keys.nextElement();
      System.out.println("key --> " + key + ", value --> " + p.getProperty(key));
    }
    
  • 读取属性:

    Properties p =  new Properties();
    p.load(PropertiesTest.class.getResourceAsStream("prop.properties"));
    p.setProperty("key#=dsafw", "value $#@^$%@**^");
    p.setProperty("key#1", "value#1");
    p.store(new FileOutputStream(new File("../TEMP/prop.properties")), "write special property kvs");
    
    p.load(new FileInputStream(new File("../TEMP/prop.properties")));
    Enumeration<Object> keys = p.keys();
    while(keys.hasMoreElements()){
      String key = (String) keys.nextElement();
      System.out.println("key --> " + key + ", value --> " + p.getProperty(key));
    }
    
    p.load(新文件输入流(新文件(“../TEMP/prop.properties”));
    枚举键=p.键();
    while(keys.hasMoreElements()){
    String key=(String)keys.nextElement();
    System.out.println(“key-->“+key+”,value-->“+p.getProperty(key));
    }
    

  • 在Java8上测试,无需任何转义字符即可正常工作

    下面的例子

    属性

    name# = #John#
    
    System.out.println( p.getProperty("name#"));
    
    Java代码

    name# = #John#
    
    System.out.println( p.getProperty("name#"));
    
    打印:约翰#

    编辑:

    如果密钥包含的第一个字符为#,则需要在属性文件中使用“\”对其进行转义

    e、 g


    @PrakashSharma我测试过了
    key\#=1
    (在属性文件中),使用
    properties.load(InputStream)
    读取,并获得
    {key\#=1}
    。哈希用于属性文件中的注释。。它不起作用