ini 文件中“#”行后的解析错误
Parsing error after '#' line in ini file
我有一个本地存储的 ini file
,我试图按如下方式解析它:
Ini ini = new Ini(new File("path/to/file"));
System.out.println(ini.get("header", "key"));
但我不断收到 解析错误异常消息 指向 ini 文件注释行 (#) 之后的行。这是我的 ini 文件的样子:
File.ini
#Tue Oct 11 18:45:03 CST 2016
PVIDNO=PALMUS-00001
PVIDNo=SSI-1
Authentication=VALID
ModelNo=KD03816-B001
PALMUS-ID=73364
PV-ID=PALMUS-01
您正在使用来自未知位置的 some class Ini;并且 Ini-File 解析器根本不喜欢包含“#comment”条目的 .ini 文件。
所以,你的选择基本上是:
- 我先忘记了,但也许 "best" 选项:不要使用 "ini" 文件;但更改为 "property" 个文件;对于 Java 应用程序,这是一个 "natural" 多得多的选择。 "Built-in"支持他们;嘿,“# 条评论”开箱即用。
- 如果Ini是"your own code";然后你让你自己的代码接受这样的评论
- 如果 Ini 来自某个库,那么您检查该库是否允许影响解析过程以允许此类注释。
如果库不允许这种特殊处理,您还有另外两个选择:
- 寻找其他一些第 3 方库来解析您的文件
- "Talk" 向提供您当前正在使用的库的人员,说服他们以某种方式让他们的库为您服务。
您尝试过使用 Properties 吗?
正在创建配置:
属性 prop = new Properties();
OutputStream 输出=空;
try {
SaveSucessful = true;
output = new FileOutputStream("config.jar");
// set the properties value
prop.setProperty("PVIDNO", "PALMUS-00001");
// save properties to project root folder
prop.store(output, null);
} catch (IOException io) {
io.printStackTrace();
} finally {
if (output != null) {
try {
output.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
阅读配置:
Properties prop = new Properties();
InputStream input = null;
try {
LoadSucessful = true;
input = new FileInputStream("config.jar");
// load a properties file
prop.load(input);
// get the property value and print it out
PlayerName = prop.getProperty("PVIDNO");
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (input != null) {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
这应该可以完美运行。
您可以对 Properties
做同样的事情:
Properties p = new Properties();
p.load(new FileInputStream("user.props"));
System.out.println("user = " + p.getProperty("DBuser"));
System.out.println("password = " + p.getProperty("DBpassword"));
System.out.println("location = " + p.getProperty("DBlocation"));
.ini 文件所在位置:
# this a comment
! this a comment too
DBuser=anonymous
DBpassword=&8djsx
DBlocation=bigone
我有一个本地存储的 ini file
,我试图按如下方式解析它:
Ini ini = new Ini(new File("path/to/file"));
System.out.println(ini.get("header", "key"));
但我不断收到 解析错误异常消息 指向 ini 文件注释行 (#) 之后的行。这是我的 ini 文件的样子:
File.ini
#Tue Oct 11 18:45:03 CST 2016
PVIDNO=PALMUS-00001
PVIDNo=SSI-1
Authentication=VALID
ModelNo=KD03816-B001
PALMUS-ID=73364
PV-ID=PALMUS-01
您正在使用来自未知位置的 some class Ini;并且 Ini-File 解析器根本不喜欢包含“#comment”条目的 .ini 文件。
所以,你的选择基本上是:
- 我先忘记了,但也许 "best" 选项:不要使用 "ini" 文件;但更改为 "property" 个文件;对于 Java 应用程序,这是一个 "natural" 多得多的选择。 "Built-in"支持他们;嘿,“# 条评论”开箱即用。
- 如果Ini是"your own code";然后你让你自己的代码接受这样的评论
- 如果 Ini 来自某个库,那么您检查该库是否允许影响解析过程以允许此类注释。
如果库不允许这种特殊处理,您还有另外两个选择:
- 寻找其他一些第 3 方库来解析您的文件
- "Talk" 向提供您当前正在使用的库的人员,说服他们以某种方式让他们的库为您服务。
您尝试过使用 Properties 吗?
正在创建配置:
属性 prop = new Properties(); OutputStream 输出=空;
try {
SaveSucessful = true;
output = new FileOutputStream("config.jar");
// set the properties value
prop.setProperty("PVIDNO", "PALMUS-00001");
// save properties to project root folder
prop.store(output, null);
} catch (IOException io) {
io.printStackTrace();
} finally {
if (output != null) {
try {
output.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
阅读配置:
Properties prop = new Properties();
InputStream input = null;
try {
LoadSucessful = true;
input = new FileInputStream("config.jar");
// load a properties file
prop.load(input);
// get the property value and print it out
PlayerName = prop.getProperty("PVIDNO");
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (input != null) {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
这应该可以完美运行。
您可以对 Properties
做同样的事情:
Properties p = new Properties();
p.load(new FileInputStream("user.props"));
System.out.println("user = " + p.getProperty("DBuser"));
System.out.println("password = " + p.getProperty("DBpassword"));
System.out.println("location = " + p.getProperty("DBlocation"));
.ini 文件所在位置:
# this a comment
! this a comment too
DBuser=anonymous
DBpassword=&8djsx
DBlocation=bigone