2012-05-11 1 views
2

File 객체와 다양한 FileReaders/Writers 및 BufferedReaders/Writers를 사용하여 SD 카드의 디렉토리 및 하위 디렉토리에 내 응용 프로그램의 모든 데이터를 배치했습니다.context.openFileOutput() vs file.createNewFile()?

모든 기기에 SD 카드가있는 것은 아니기 때문에 4 가지 질문이 있습니다.

  1. 안드로이드를 실행하는 핸드셋 중 현재 사용중인 휴대 전화의 백분율이 현재 SD 카드를 구현하지 못합니다.

  2. 내가 SD 카드에서 같은 이유로 휴대 전화 내부 메모리 (응용 프로그램 디렉토리)의 파일 구조를 조작 할 수있는 권한을 부여하는 방법은 무엇입니까?

    • 또는 -
  3. 내가 대신 때 createNewFile의()) openFileOutput를 (사용하여 내 응용 프로그램에서 SD 카드 파일 동작을 복제하기 위해 내 모든 코드를 다시 구현해야합니다?

  4. 왜 SD 대 애플리케이션 디렉토리의 파일 액세스가 다른가요?

+0

DATAite를 SQLite와 같은 DATAbase에 저장하지 않는 이유는 무엇입니까? – Jack

+0

내 앱 데이터는 텍스트 파일 형식이므로 다른 기기에서 직접 파일을 다운로드/업로드하고 편집 할 수 있습니다. 비록 내부 메모리에 비 추상적 인 데이터를 저장하기 위해 데이터베이스를 사용할 수있는 것 같습니다. –

답변

1

1) 사람이 SD 카드를 구현하지 않는 현재 안드로이드를 실행하는 단말기의 손 대략 몇 퍼센트를 알고 있나요?

휴대폰 지원 SD 카드, 그것은 의미하지 않는다 수없는 경우에도 그것을 않는 시간의 주어진 순간에 지원을, SD 카드를 제거하거나 PC 액세스 장착 또는 다른 수백가 될 수 있기 때문에 원인. 그러므로 중요한 것을 넣지 마십시오.

2) 내가 SD 카드에서 같은 이유로 전화 내부 메모리 (응용 프로그램 디렉토리)의 파일 구조를 조작 할 수있는 권한을 부여 할 수있는 방법이 있습니까?

내부 메모리 파일에는 계층 구조가 없어야합니다. 파일 이름에 경로 구분 기호가있는 경우 openFileOutput()은 예외입니다. 그 외에도, /data/data/com.your.app/files 디렉토리에 몇 개의 파일을 배치 할 수 있는지에 대한 제한이 없습니다. 그리고 파일을 만들거나 열 때 특정 권한이 필요하지 않습니다.

3) 내가 대신 때 createNewFile의()) openFileOutput를 (사용하여 내 응용 프로그램의 SD 카드 파일 동작을 복제하기 위해 내 모든 코드를 다시 구현해야합니다?

아니겠습니까? 기본적으로 애플리케이션의 소형 및/또는 생명에 중대한 모든 파일이 내부 메모리에 저장되며 실제로는 필요하지 않은 모든 크고 중요한 파일 (이미지, 비디오)이 SD 카드로 전송됩니다. 충돌은 없으며 응용 프로그램을 완벽하게 시작할 수 있으며 SD 카드를 사용할 수 없다면 불만을 토로합니다.

+0

그리고 내가 불평 할거야!조언 lenik 주셔서 감사합니다. 그래도 네 번째 질문에 대한 생각은? –

+0

네 번째 질문에 대해서는 안드로이드 진화의 역 동성에 대해서는 정확히 알지 못합니다. 그러나 내부 메모리는 원래 데이터 크기와 파일 이름 지정에 대한 엄격한 제한을 가지고 특정 애플리케이션에만 액세스 할 수있는 개인 저장소로 설계된 것으로 의심됩니다 (백업을 단순화하기 위해). 아마도?). 2007 년에는 아무도 멀티 기가비트 내장 메모리가 필요하다는 꿈을 꾸지 못했습니다. – lenik