【问题标题】:Java Properties File: Useful Case of Empty Property Value?Java 属性文件:空属性值的有用案例?
【发布时间】:2015-09-23 16:09:49
【问题描述】:

我在搞乱 Java 中的属性文件。我想知道是否有一些使用空值('propertyName=\n')的属性文件以及它们的用途?

[更新]

由于有些人仍然感到恼火,这里有一个更好的描述:

一个示例属性文件可能如下所示:

database.username = john
database.password = johnsSecret

好的,很简单。现在的问题是是否有人看到过类似的东西:

anyProperty =

我只是想问你是否知道一个实际发生的用例,你需要在属性文件中表达一个空的属性值,为什么会这样。

PS:这不是社会实验,它是为了确定这种情况是否实际需要,或者我是否可以使用它来表达在指定增量以通过添加或删除现有属性文件来转换现有属性文件时删除属性的愿望条目。或者,我将使用-propertyname 删除任何属性。

【问题讨论】:

  • 这可能有助于取消设置一些默认值。
  • 这正是我试图通过完全删除它们来使用的东西。如果它有空值,它就消失了。但是,如果有我不知道的有效用例,我想提前了解它们。
  • 我想不出任何其他用例,只能取消设置已设置的值或明确说明未设置某些属性。
  • 谢谢。在野外不知道的东西是一个非常重要的信息:-)。通常由另一个属性文件掩盖属性是非常罕见的,它甚至可以被认为是邪恶的。想一想路径 '/foo' 通过用 '' 覆盖它来取消设置。应用程序需要额外的逻辑才能理解“”实际上没有任何意义。这就是为什么我认为合并属性实际上应该删除密钥并说它不存在。所以我问这个(硬)问题。

标签: java properties


【解决方案1】:

这个问题太模糊了,我投票支持“不清楚你在问什么”,这太奇怪了,甚至似乎是一个分析人们随机生成问题答案的社会实验。

话虽如此,这段代码会保存并读取您所要求的属性文件。

//Write
String fileName="fileInTheWild.properties";
Properties prop= new Properties(); 
OutputStream fos = new FileOutputStream( fileName );
prop.put("propertyName", "\n");
prop.store(fos, "Some Properties"); 

//Read
prop.load(new FileReader(fileName));    
String newLine= prop.getProperty("propertyName");
System.out.println("Line 1" + newLine +"Line 2");

【讨论】:

  • 这个问题有什么模糊之处?我不明白你们...... .
  • @MartinKersten 现在在您编辑之后,它不那么模糊了,那么您是否在询问如何区分空属性和空属性?您可以显式使用 anyProperty = null,或者问题是您何时实际使用空属性?然后任何可选属性都符合该标准,即使在程序内部,您也可以将其威胁为空值或 null,作为您的选择,对于可选的中间名字段,我更喜欢空格而不是错误的 null..跨度>
  • 其实我想知道这是否在野外使用。我的意思是“”的中间名我猜是错误的,因为您要么有(填充的)中间名,要么没有中间名,并且没有一个由 =null (或映射到 null 内容的 Optional.empty )表示。因此,如果您知道一个强制您使用 "" 的 API,我想知道。我写的是内部使用,但我想防止下游的维护成本,所以我试图正确地理解这个事实,但如果有人遇到这个问题,他必须理解改变 bla bla... 花钱... .
猜你喜欢
  • 2014-07-29
  • 2012-05-16
  • 1970-01-01
  • 1970-01-01
  • 2016-05-15
  • 1970-01-01
  • 1970-01-01
  • 2015-05-17
相关资源
最近更新 更多