2010-12-13 2 views
3

저는 Android 2.2 응용 프로그램을 개발 중입니다.자산 폴더에 큰 텍스트 파일 추가

Android 프로젝트에 큰 텍스트 파일 (4.5MB 이상)을 추가하고 싶습니다.

먼저 자산 폴더에 큰 파일을 추가 할 수 있는지 여부를 알 수 없습니다. 하지만, 가능하다면 압축 할 수 있습니까?

파일을 압축하는 방법은 무엇입니까? 압축 해제 하시겠습니까?

큰 텍스트 파일을 Android 프로젝트에 추가하는 다른 방법이 있습니까?

감사합니다.

+1

텍스트 파일을 더 작은 청크로 분할 할 수 있습니까? 당신이 어쨌든 그것을 사용하려고 할 때 장치는 아마 그 파일을 한번에 불러올 RAM이 없을 것입니다. –

답변

3

자산 폴더에있는 1MB 이상의 파일은 앱에서 읽을 수 없습니다 (예외가 발생합니다). 이는 빌드 프로세스 중에 압축되기 때문에 핸드셋에있을 때 전화가 압축을 풀려면 상당한 리소스가 필요하기 때문입니다.

나는

그러나, 그것은 4.5 MB 텍스트를 가진 좋지 않다 (here 참조) 그들이 압축 얻거나 AAPT는 이미 압축되어 가정합니다 확장을 사용하지 않습니다 원시 폴더에 배치 할 수 있습니다 생각 APK에 압축되지 않은 파일이 저장되어있어 더 잘 처리 할 수있는 낭비 된 공간입니다. 첫 번째 사용시 데이터를 다운로드하거나 AAPT가 압축 할 수 있도록 이전에 제안 된대로 파일을 청크로 분할하는 것에 대해 생각해보십시오.

+1

"1MB 초과 파일 ..." 나는 stackoverflow에서 이렇게 많은 시간을 보았지만 내 인생에서 문서에서 찾을 수는 없다. 그것이 명시된 곳으로의 링크가 있습니까? – matt

1

가끔 문제가 될 수 있습니다. 패키지 자체가 압축 (.APK)되기 때문에 실제로 압축하지 않아도됩니다. 실제로는 assets 폴더에 저장 한 내용은 읽을 때 압축되지 않습니다. 파일의 크기와 관련하여 파일을 잘라내어 파일의 작은 부분을 assets 폴더에 넣을 수 있습니다.

0

자산 디렉토리 (원시 제외)가 이미 압축되어 있다고 생각합니다. 또한 안드로이드 마켓은 곧/50MB 크기의 apk를 허용 할 것입니다. 먼저 시도한 다음 문제가 있는지 확인하십시오.

0

해당 4.5MB 텍스트 파일에 대해 조각화 작업을 수행해야합니다. 텍스트 파일을 최대 크기가 1MB 인 5 개의 파일로 분할해야하는 경우. 그런 다음 다시는이처럼 다시 가입해야합니다

 OutputStream databaseOutputStream = new FileOutputStream(outFileName); 
     InputStream databaseInputStream; 

     byte[] buffer = new byte[1024]; 
     int length; 

     databaseInputStream = myContext.getResources().openRawResource(
       R.raw.outfileaaa); 
     while ((length = databaseInputStream.read(buffer)) > 0) { 
      databaseOutputStream.write(buffer); 
     } 
     databaseInputStream.close(); 


     databaseInputStream = myContext.getResources().openRawResource(
       R.raw.outfileaba); 
     while ((length = databaseInputStream.read(buffer)) > 0) { 
      databaseOutputStream.write(buffer); 
     } 
     databaseInputStream.close(); 
     databaseOutputStream.flush(); 
     databaseOutputStream.close(); 
2

또 다른 방법은 당신이 IOUtils를 사용하여 처음 실행시 SD 카드에 파일을 복사해야합니다. 또한 각 바이트를 복사하면 더 많은 리소스가 사용되므로주의해야합니다.

나를 위해 작동, 나는 클라이언트의 요구 때문에 자산 폴더에 30MB의 큰 zip 파일을 넣어야했습니다.

관련 문제