2016-08-20 6 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/raw/)에 있었더라도 FileReader을 통해 액세스 할 수 없습니다. 개발 컴퓨터의 파일입니다. Android 기기의 파일이 아닙니다.

당신의 두 가지 옵션은 다음과 같습니다 res/raw/res/Data/에서

  1. 이동이 JSON 파일. 그런 다음 getResources().openRawResource(R.raw.dataStructures)을 사용하여 JSON에 InputStream을 가져옵니다.

  2. JSON 파일을 res/Data/에서 assets/으로 이동하십시오. 그런 다음 getAssets().open("dataStructures.json")을 사용하여 JSON에 InputStream을 가져옵니다. getResources()getAssets()ActivityContext와 그 서브 클래스에 대한 방법이 있음은

참고.

+0

답장을 보내 주셔서 감사합니다. 방금 json을 사용하기 시작 했으므로 아직 얻지 못했습니다. 지금 이해할 수없는 유일한 방법은 파서를 사용하여 JSONObject를 만드는 방법입니다. parse 메소드는 Reader 또는 String을 허용합니다. 기본적으로, 어떻게 InputStream에서 Reader/String으로 변환하겠습니까? – baki1995

+0

@ baki1995 : [InputStreamReader'] (https://developer.android.com/reference/java/io/InputStreamReader.html)를 사용하십시오. – CommonsWare

0

자산 폴더에 json을 넣어야합니다.

  1. 투시도 창에서 프로젝트 투시도를 엽니 다.
  2. 는 JSON 응답을 필요로하는 곳에 따라 이름 자산과의 android_test/테스트 폴더 안에 디렉토리를 생성
  3. 이제 단순한 자산 폴더 안에
  4. 당신의 JSON 파일을 넣어 그리고 단순히 같은 자신의 하나의 이름을 호출하여 JSON 전화 xyz.json