2014-07-30 3 views
0

내가 액세스해야하는 파일 (특히 .txt 파일)이 있습니다. 내 자신의 리소스 폴더를 만들고 나서 BufferedReader로 액세스하려고했지만 null 포인터 오류가 발생했습니다.BufferedReader가 액세스 할 Android 프로젝트의 파일을 저장할 위치는 어디입니까?

그래서 질문 :

경우이 파일을 저장하고 여전히 액세스 할 수의 BufferedReader를 사용하는 가장 좋은 방법은?

+0

하나는 그것을 자산으로 저장하고 다음의 BufferedReader로 읽을 수 있습니다 귀하의 고해상도 디렉토리 –

답변

1

res/raw 폴더에 넣습니다.

은 그럼 당신은 같은 것을 할 수 있습니다

BufferedReader br = new BufferedReader(new InputStream(context.openRawResources(R.raw.<filename>))); 
1

apk로 압축해야하는 파일의 경우 자산을 사용할 수 있습니다. project structure docs을 살펴보십시오.

나중에 다운로드 할 파일은 외부 저장소를 사용하는 것이 좋습니다.

+0

같은 동일한 계층 구조에서 그것을 만들 수있다 해달라고하면? – user3376241

+0

예, AssetManager의'open()'을 사용하면 스트림이 열립니다 : http://developer.android.com/reference/android/content/res/AssetManager.html#open(java.lang). 끈) –

0

3 가지 안드로이드에서 파일에 액세스 할 수 : 자산 즉 원시 폴더에서

  1. 하지만 APK 파일 크기가 큰 파일이 APK에 위치하고 있기 때문입니다.
  2. 외부 저장소 예 : sdcard sdcard에서 액세스하려면 쓰기 권한이 필요합니다.
  3. 인터넷 해당 파일에 액세스하려면 인터넷 권한이 필요합니다.

위의 3 가지 방법 모두 BufferedReader를 사용할 수 있지만, BufferedReader로 입력 스트림을 체인화하여 바이트 당 1 바이트를 읽는 대신 지정된 데이터 바이트를 읽어야합니다.

내 코드 조각 : 자산 디렉토리에

File f = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "vishnu.txt"); 
try { 
    FileInputStream fi = new FileInputStream(f); 
    BufferedReader myReader = new BufferedReader(new InputStreamReader(fi)); 
    String temp = myReader.readLine(); 
    Toast.makeText(getBaseContext(), temp, Toast.LENGTH_LONG).show(); 
    myReader.close(); 
    fi.close(); 
} catch (Exception e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
관련 문제