我正在尝试从包含以下内容的属性文件中提取用户名和密码
#Fri May 31 09:33:22 CEST 2013
password=user40_31-05-2013
username=user40_31-05-2013
File propertiesFile = new File('testdata.properties')
def config = new ConfigSlurper().parse(propertiesFile.toURL())
println(config.username)
我遇到了这个错误:
期待'!',找到'F'@ 第1行,第2栏。#Fri May 31 09:33:22 CEST 2013 ^
1错误
提前致谢
答案 0 :(得分:7)
您可以使用更加惯用的方式自行关闭流:
def props = new Properties()
new File("foo.properties").withInputStream { s ->
props.load(s)
}
答案 1 :(得分:1)
使用Properties类型:
def props = new Properties()
def stream = new FileInputStream("foo.properties")
try {
props.load(stream)
} finally {
stream.close()
}
System.out.println(props)
答案 2 :(得分:1)
也许我在这里是个白痴,但是他使用shell风格的评论字符(#)而不是常规评论(//或/ * ... * /)不是更大的问题? / p>
他的错误信息是因为unix脚本开头的#应该跟着!然后是解释器的路径。 (像#!/ bin / sed这样的东西)
答案 3 :(得分:0)
有趣的问题和答案。对我来说,所有答案似乎都是正确的,但没有人回答根本原因。
ConfigSlurper 是一个简单的类,只有很少的方法。最重要的方法被命名为 parse
。只有一种解析方法适用于属性。其他用于 Groovy 脚本文件。
因此根据文档,您正在尝试从 Groovy 脚本读取配置,而不是属性文件。这就是它抱怨如下消息的原因。因为 Groovy 脚本可能会在文件开头声明 shebang likes #!/usr/bin/env groovy
。
expecting '!', found 'F' @ line 1, column 2. #Fri May 31 09:33:22 CEST 2013 ^
1 error
这是根据您的代码进行的修改以解决问题
Properties props = new Properties()
new File('testdata.properties').withInputStream { props.load(it) }
def config = new ConfigSlurper().parse(props)
println config.username