2012-11-27 3 views
1

Android 애플리케이션을 작성 중이며 2 개의 파일을 장치의 내부 저장소에 복사해야합니다. 현재 DDMS를 사용하여 장치의 "/ data/data/[my_package_name]/files"폴더 아래에이 두 파일을 수동으로 복사 한 후 응용 프로그램을 실행할 수 있습니다. 응용 프로그램을 장치에 설치하는 동안이 두 파일을 해당 폴더 (또는 폴더)에 넣어야합니다. 여기서 tip은 "res/raw /"디렉토리 내의 파일이 장치에 배포되며 openRawResource()를 통해 액세스 할 수 있다고 말합니다. 그러나이 파일을 내부 메모리에 넣을 위치를 알려주지 않습니다. summerize하기 위해, 나는 내 프로젝트 폴더 (자산, 원시, 다른 폴더)에 두 개의 파일이 있고 내부 메모리의 경로 안에이 두 파일을 복사해야합니다. 이것을 어떻게 할 수 있습니까? 내 AndroidManifest.xml에 포함 된 권한이 필요합니까?안드로이드 내부 메모리에 파일 복사

고맙습니다.

답변

1

큰 거래는 없습니다. 이 작업을 수행하는 데는 여러 가지 방법이 있지만 아마도이 방법보다 짧을 수 있습니다.

InputStream is = AssetManager.open("somefile.txt"); 
File outputFile = new File(getExternalFilesDir(), "somefile.txt"); 
OutputStream os = new FileOutputStream(outputFile); 

//Now copy is to os. I'd recommend using Apache Commons IO 
org.apache.commons.io.IOUtils.copy(is, os)); 

예, SD 카드 (WRITE_EXTERNAL_STORAGE)에 쓰기 권한이 필요합니다.

UPDATE :
그냥 명확히하기 : 어떤 끝이라고하는 것은 :

팁 : 당신은, 컴파일시에 응용 프로그램에서 정적 파일을 저장할 프로젝트 입술/원시에서 파일을 저장하려면/디렉토리. openRawResource()를 사용하여 R.raw를 전달하여 열 수 있습니다. 리소스 ID. 이 메서드는 파일을 읽는 데 사용할 수있는 InputStream을 반환하지만 원본 파일에 쓸 수는 없습니다.

파일의 자산 폴더는 apk에 포함되어 있지만 읽기 전용이며 내부 또는 외부 메모리에는 배포되지 않습니다. 위의 예에서와 같이 혼자서해야합니다.

관련 문제