2016-08-20 138 views
0

我正在研究一個簡單的應用程序,並試圖瞭解如何使用json解析器從json文件中讀取數據。我寫了一個簡單的json文件並將其放入我的一個目錄中。然後我用正確的時鐘來獲取路徑,並寫了下面的代碼:從json文件中讀取,FileNotFoundException

java.io.FileNotFoundException: C:\Users\My Name\IntelliJIDEAProjects\Intereview\app\src\main\res\Data\dataStructures.json: open failed: ENOENT (No such file or directory) 

這可能是背後的原因:某些原因

public void myParser() { 
    JSONParser parser = new JSONParser(); 

    String path = "C:\\Users\\My Name\\IntelliJIDEAProjects\\Intereview\\app\\src\\main\\res\\Data\\dataStructures.json"; 

    try{ 
     JSONArray topics = (JSONArray)parser.parse(new FileReader(path)); 
     for(int i=0;i<topics.length();i++) { 
      JSONObject object = topics.getJSONObject(i); 
      String title = object.optString("title").toString(); 
      Log.i(TAG,title); 
     } 

    } 

    catch(JSONException e) { 
     Log.e("Internal Problem", e.getMessage()); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 


} 

,我在運行應用程序時出現此錯誤?我一直對這個在過去的幾個小時,我實在不明白它.. 感謝

+0

我覺得這個消息很清楚。 Mybe是這裏的一個類型:'Intereview'? – Jens

+2

您正在手機或模擬器中運行應用程序,並給出計算機磁盤的路徑它怎麼可能? – Shubham

+0

沒有好友,多數民衆贊成在應用程序的名稱..打字錯誤 – baki1995

回答

0

這似乎當文件不存在...

檢查的拼寫你的路徑名(intereview?)和...檢查文件是否存在。

0

您對此問題有,所以我假定您正在嘗試編寫Android應用程序。如果是這樣,這是不行的:

String path = "C:\\Users\\My Name\\IntelliJIDEAProjects\\Intereview\\app\\src\\main\\res\\Data\\dataStructures.json"; 

我的猜測,根據這條道路上,是你試圖用打包你的應用程序一個JSON文件。在這種情況下,您不能在res/下創建隨機目錄。即使此JSON文件位於正確的res/目錄(例如,res/raw/)中,也無法通過FileReader訪問它。它是你開發機器上的一個文件。這不是Android設備上的文件。

您的兩個主要選項是:

  1. 此舉JSON從res/Data/文件到res/raw/。然後,使用getResources().openRawResource(R.raw.dataStructures)獲取JSON上的InputStream

  2. 將JSON文件從res/Data/移動到assets/。然後,使用getAssets().open("dataStructures.json")獲取JSON上的InputStream

注意getResources()getAssets()Context及其子類的方法,如Activity

+0

非常感謝你的回答,我剛開始使用json,所以我還沒有真正得到它。我現在唯一不瞭解的是,如何使用解析器創建JSONObject?解析方法接受一個Reader或一個String。基本上,我將如何從inputStream轉換爲Reader/String? – baki1995

+0

@ baki1995:使用[InputStreamReader'](https://developer.android.com/reference/java/io/InputStreamReader.html)。 – CommonsWare

0

您需要將json放入assets文件夾中。

  1. 在透視窗口中打開項目透視圖。
  2. 與名字資產的android_test/test文件夾內,這取決於你需要JSON響應創建目錄
  3. 現在簡單的把你的JSON文件資產文件夾內
  4. 而且通過簡單地調用它們就像一個名字叫你的JSON xyz.json