我正在编写一个Java程序,它遍历当前目录中的所有JSON文件并通过它们进行解析,但是我遇到了解析部分的问题。我在JSONObject x
行Unexpected character (�) at position 0.
但是,当我用文件目录的字符串手动替换files[i]
时,我没有收到错误。我使用files[i]
,时只会出错,但我不明白为什么因为files[i]
是文件目录的字符串。
File path = new File(filePath);
File[] files = path.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isFile()) {
//the following line is giving me the error!
JSONObject x = (JSONObject) parser.parse(new InputStreamReader(new FileInputStream(files[i])));
org.json.simple.JSONArray contexts = (org.json.simple.JSONArray) x.get("contexts");
for (int y = 0; y < contexts.size(); y++) {
Object name = contexts.get(y);
System.out.println(name);
}
}
}
答案 0 :(得分:1)
想出来!实际上问题是目录中的文件不是JSON ,所以在尝试解析时会出错。现在我删除了非JSON文件
没有更多错误答案 1 :(得分:0)
如果您说错误必须在文件名中(参考:您对文件[i]的评论和表示文件夹中文件路径的字符串)
但是当我用a的字符串手动替换文件[i]时 文件目录,我没有收到错误。我使用时只会出错 文件[I]
,那么你必须知道新的FileInputStream(<...>)
有很多重载。这些在底层代码中不是相同的路径。当您将字符串传递给FileInputStream
时,它会创建一个File对象并继续执行代码。因此,您可以尝试比较这些2并查看它们是否相等,如果不相等,请找出系统上当前区域设置的编码。例如,比较new File(<string_that_works>)
和files[i]
对应于待测字符串的i