2016-08-04 2 views
0

나는 안드로이드의 특정 폴더에서 특정 파일을 읽으려고 시도하고 있는데,이 파일은 SQLite 데이터베이스로 읽혀질 것입니다. 자산 폴더에서 파일을 가져올 때 데이터베이스에 대한 읽기가 정상적으로 작동합니다 (그러나 파일이 시간에 변경되므로 최종 빌드에는 작동하지 않습니다). 그러나 실제로 파일에 액세스 할 수없는 파일에 대한 지속적인 문제가 있습니다.Android 특정 파일 위치 선택

장치의 파일 경로는 "/ storage/emulated/0/Wellpro"이고 파일 이름은 "orfice.txt"입니다.

현재이 코드를 어떻게 든 찾지 못했기 때문에 약 3 ~ 4 개의 다른 소스에서 파일에 액세스하는 코드가 생성되었습니다.

 String fileName = "/storage/emulated/0/Wellpro/orfice.txt"; 
     String path = Environment.getExternalStorageDirectory()+fileName; 
     InputStream is = new FileInputStream(path); 
     BufferedReader buffer = new BufferedReader(new InputStreamReader(is, "UTF-8")); 

모든 도움을 주시면 감사하겠습니다.

감사합니다.

답변

1

getAbsolutePath()는 SD 카드의 전체 경로를 제공합니다.

String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath(); 
String fileName = "myFile.txt"; 

// check if file path exist then read the file 
File f = new File(baseDir + File.Separator + fileName); 
FileInputStream fiStream = new FileInputStream(f); 
+0

파일이 SD 카드 경로에 있지 않습니다. 그것은 폴더 안에 앉아 있습니다. 또한이 작업이 변경되는지는 모르겠지만 SD 카드를 사용하지 않는 경우입니다. 내부 저장소에 있지만 앱에 액세스 할 수있는 저장소입니다. 내가 이해하는 바에 따르면 어쨌든 외장 스토리지로 취급됩니다. – Mitchell

+0

나는 정확하게 u를 얻지 않았다. 행복하다면 이해하는 데 도움이됩니다. – Kathi

+0

파일이 "Wellpro"라는 폴더에 있습니다. 그래서, 먼저 SD 카드의 경로로가는 그 폴더에 들어가야 할 것입니다 나는 생각하지 않을 것입니까? – Mitchell

0

첫 번째 실수는() 파일 이름이 Environment.getExternalStorageDirectory 이후 "orfice.txt을"인 것을 당신에게 경로를 제공하려고합니다. @ Kathi의 해결책을 따른다.

여전히 문제가 발생하는 경우 외부 저장소에 액세스하는 데 필요한 적절한 권한이 추가되었는지 확인하십시오. 당신은 API < (23)에 대해 개발하는 경우 API = 23 개발하는 경우, 당신은 실행시 권한을 요청해야, 안드로이드 매니페스트에 다음과 같은 권한을

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

를 추가합니다. 방법에 대한 자세한 내용은 https://developer.android.com/training/permissions/requesting.html을 확인하십시오.

+0

좋아요, 그래서 getExternalStorageDirectory ("/ storage/emulated/0/Wellpro /")와 같은 getExternalStorageDirectory에 "/ storage/emulated/0/Wellpro /"를 넣을 수 있습니까 ?? – Mitchell

+0

아니오 사용해야합니다. 파일 file = 새 파일 (Environment.getExternalStorageDirectory(). getAbsolutePath() + "/Wellpro/orfice.txt"); 참고 : 외부 저장소는 온보드 플래시 메모리의 일부입니다. –

+0

getAbsolutePath()없이 Environment.getExtrenalStorageDirectory()를 사용하는 것이 더 좋습니다. –