【问题标题】:Java NoSuchFileException When File Exists文件存在时Java NoSuchFileException
【发布时间】:2021-09-02 07:42:30
【问题描述】:

我正在尝试将 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 studios 中,错误中的路径作为链接提供,我可以单击该链接,将我引导至写入文件 - 因此,我认为路径没有错。 这是我的代码:

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();
}

很抱歉,格式混乱了。我也尝试在路径中使用 \ 而不是 / ,但它不起作用。任何帮助将不胜感激 - 非常感谢!

【问题讨论】:

  • 尝试打印出文件对象的绝对路径。
  • 试着把斜线换成另一种方式?您需要将它们加倍才能在字符串中转义它们,所以"C:\\Users\\"
  • 为什么要在 Android 项目中从 Windows 文件系统打开文件?
  • 看看this是不是你想要做的。

标签: java android nosuchfileexception


【解决方案1】:

您可以在测试时让此代码正常工作,但显然,您的 Android 手机上没有 C:\Users\andno,以后也不会有。

你找错树了。你根本不想读取文件。

您想从 java(或者,更确切地说,android)加载类文件(或 android 中类文件的任何传递)的同一位置读取资源。这可能来自 jar 或 apk 之类的东西。

UiMain.class.getResource("test.json")

UiMain.class.getResourceAsStream("test.json")

将从UiMain.class 所在的同一位置为您获取一个名为test.json 的资源(即在同一个包中,我假设这是com.example.android.androiddev2climateapp.home.ui.UiMain 类。第一个作为URL,您可以通常传递给图像等的构造函数,第二个作为流,你需要安全地关闭它(如果 android 已经开始添加这个 20 年的 java 功能,请尝试/最终或 try-with-resources),并且您可以使用各种 API 将其转换为字符串。可能 JSON API 本身可以只提供一个输入流。

【讨论】:

    猜你喜欢
    • 2017-10-14
    • 2012-12-25
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多