在最简单的事情上让自己疯狂。我有一个名为config.txt的JSON文件。该文件如下所示。 { “UsePipesInGuestData”:true }
我想做的就是获得一个二维数组,这样: Array [0] = UsePipesInGuestData和 数组[1] =真
我已经尝试了4个小时的各种尝试,我最近的显示如下: private void getConfig(){ //从config.txt
读取配置信息的功能 FileInputStream is;
BufferedReader reader;
try {
final File configFile = new File(Environment.getExternalStorageDirectory().getPath() + "/guestlink/config.txt");
if (configFile.exists()) {
is = new FileInputStream(configFile);
reader = new BufferedReader(new InputStreamReader(is));
String line = reader.readLine();
while (line != null) {
line = reader.readLine();
if(line!= null) {
line = line.replace("\"", ""); //Strip out Quotes
line = line.replace(" ", ""); //Strip out Spaces
if ((!line.equals("{")) || (!line.equals("}"))) {
} else {
String[] configValue = line.split(":");
switch (configValue[0]) {
case "UsePipesInGuestData":
if (configValue[1].equals("true")) {
sharedPreferences.edit().putString("UsePipes", "true").apply();
} else {
sharedPreferences.edit().putString("UsePipes", "false").apply();
}
break;
}
}
}
}
reader.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
我似乎无法忽略其中包含{和}的行。
显然,必须有一种更简单的方法。 JAVA似乎只需要使用极大量的代码来完成最简单的操作。非常感谢任何帮助。
答案 0 :(得分:0)
我相信你的情况不正确。您尝试在条件(!line.equals("{")) || (!line.equals("}"))
的else中读取该文件。简化,您的代码将在以下情况发生时运行:
!(!{||!})=> {&& (应用De Morgan法律)
这意味着只有当行是" {" AND 它是"}"这是一个矛盾。尝试使用简单的条件,例如(!line.equals("{")) && (!line.equals("}"))
(这是您希望执行代码时)。
此外,您可能会在字符串中收到行尾字符(\ n),这会使您的情况失败(" {\ n"!=" {") 。我建议您调试并查看您在这些行中获得的实际值。