Android「services.json」ファイルを読み込みたいのですが、どうしてもうまく読み込むことができません。
ソースコードはこちらになります。
public static void readingFile() { List<Item> items = new ArrayList<>(); try { // FileInputStream fileInputStream = (FileInputStream) JsonManager.class.getClassLoader().getResourceAsStream("app/src/services.json"); FileInputStream fileInputStream = new FileInputStream("services.json"); byte[] buffer = new byte[fileInputStream.available()]; fileInputStream.read(buffer); fileInputStream.close(); String json = new String(buffer); JSONArray jsonArray = new JSONArray(json); for(int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject = (JSONObject) jsonArray.get(i); Item item = new Item(); item.setProjectId((int) jsonObject.get("id")); item.setUrl((String) jsonObject.get("url")); items.add(item); } } catch (Exception e) { Log.d("TAG", e.getMessage()); } for(int i = 0; i < items.size(); i++) { Log.d("TAG", "id:" + items.get(i).getId() + ", url:" + items.get(i).getUrl()); } } }
FileInputStream fileInputStream = new FileInputStream("services.json");
の部分でcatch に入ってしまいます。
} catch (Exception e) { }
エラー内容は以下になります。
services.json: open failed: ENOENT (No such file or directory)
services.jsonのパスの部分ですが、
同じディレクトリに入れた場合
"services.json"と記述
src直下ディレクトリに入れた場合
"app/src/services.json"と記述
などディレクトリのパスを指定して試しました。
よろしくお願いいたします。
11/13 追記:
パスを指定する引数に下記のように指定したらファイルの場所を認識しました。
"/data/user/0/com.example.SamplePJ/files/services.json"
ただ、対象のjsonファイルを右クリックして、Copy Path でパスを取得すると以下になります。
C:\Users\user\Desktop\SamplePJ\app\src\services.json
上記はなぜ変わってしまうのでしょうか?
という疑問が残りました。
