我正在尝试解析一个json文件作为android开发项目的一部分。这是一个不断弹出的错误消息:W/System.err: java.nio.file.NoSuchFileException: C:/Users/andno/Desktop/AndroidDev2ClimateApp/app/src/main/java/com/example/androiddev2climateapp/ui/home/test.json然而,在android studio中,错误中的路径是作为一个链接提供的,我可以点击这个链接,将我带到写文件-因此,我不认为这个路径是错误的。下面是我的代码:
String first = "C:/Users/andno/Desktop/AndroidDev2ClimateApp/app/src/main/java/com/example/androiddev2climateapp/ui/home/test.json";
try {
String fileContents = new String((Files.readAllBytes(Paths.get(first))));
JSONObject json = new JSONObject(fileContents);
JSONArray widgets = new JSONArray("WidgetArray");
for(int i = 0; i < widgets.length(); i++){
int id = widgets.getJSONObject(i).getInt("id");
System.out.println(id);
}
} catch(IOException | JSONException e){
e.printStackTrace();
}很抱歉,格式被弄乱了。我也尝试过在路径中使用\而不是/,但它不起作用。任何帮助都将非常感谢--非常感谢!
发布于 2021-06-17 21:57:05
当你测试的时候,你也许能够让这段代码工作,但是很明显,你的安卓手机上没有C:\Users\andno,将来也永远不会有。
你找错人了。您根本不想读取文件。
您希望从java (或者更确切地说,android)加载类文件(或者在android中被认为是类文件)的同一位置读取资源。可能是从罐子里拿出来的。
UiMain.class.getResource("test.json")
或
UiMain.class.getResourceAsStream("test.json")
将从UiMain.class所在的位置(即,在相同的包中,我假设这是类com.example.android.androiddev2climateapp.home.ui.UiMain )获得一个名为test.json的资源。第一个是URL,通常可以传递给图像的构造函数等;第二个是stream,你需要安全地关闭它(如果android已经开始添加有20年历史的java功能,则可以使用try/ APIs或try-with-resources ),并且可以使用各种API将其转换为字符串。JSON API本身可能只需要输入一个inputstream。
https://stackoverflow.com/questions/68020420
复制相似问题