2011-04-10 6 views
1

나는 (열거 형으로 해결할 값을 보유하고있는) 텍스트 파일을 사용하여 앱이 표시 할 시각적 인터페이스를 구성하는 앱을 만들려고합니다. 질문은 약간 복잡하므로 결과를 자세히 해석하는 것이 더 좋을 것이라고 생각합니다.android file io

내가하고 싶은 것은 한 번에 2 문자 (숫자 여야 함)를 읽고 그 다음에 string [str] (제어 문자 포함)을 사용하여 해당 문자열을 R.drawable [R.drawable.str]에 집어 넣고 올바른 이미지를 표시 할 수 있습니다.

더 구체적으로 내가 원하는 방식으로 해결할 수있는 R.drawable에 줄을 지정하거나 주위에서 춤을 춰야합니까?

내 앱 개발 라이프 사이클 중 일부에서 이러한 파일을 생성하여 divice에 사용할 수있는 기능을 구현할 예정입니다. 사용자가 액세스 할 수 없지만 여전히 텍스트 파일의 형태로 존재할 수 있다는 것을 보장 할 수 있습니까?

"알려진 디렉토리"의 시스템 파일에서 읽는 데 필요한 특정 항목이 있습니까?

내 텍스트 파일을 wtritting 할 때 carrage-return-line-feed를 사용할 수 있습니까? 강제로 반환하면 읽기 쉽도록하고 다른 수준의 오류를 추가 할 수 있으므로 제어 코드 이외의 작업은 \ n 관리해야합니다. 수정을 방지하기위한 점검 및 시스템 읽기 오류 (발생해야 함)?

답변

1

일부 텍스트 파일을 앱에 제공하려는 경우 프로젝트의/res/assets 디렉토리에 텍스트 파일을 포함시킨 다음 휴대 전화의 앱의/files 디렉토리에 '처음 실행'할 때 복사 할 수 있습니다 내부 저장소.

/files 디렉토리는 사용자가 파일에 직접 액세스하지 못하도록하려는 경우에도 사용자가 만드는 파일을 저장하기에 좋습니다 (내부 메모리는 사용자가 루트 액세스 권한을 가진 경우에만 액세스 할 수 있습니다). 전화기).

리소스에 액세스하기위한 텍스트 문자열을 연결하는 경우 모든 R.foo.bar 식별자는 실제로 정수 ID에 대한 텍스트 '키'이므로 작동하지 않습니다. 즉, R.drawable.my_icon은 컴파일러 환경에서 '문자열'로만 존재하며 빌드시 정수로 변환됩니다.

드로어 블을 image_01, image_02와 같은 이름으로 제공하고 애셋 디렉토리에 두는 것을 고려해 볼 수 있습니다. 리소스 식별자 대신 파일 이름을 참조/액세스 할 수 있습니다. 편집

: 전화의 sdcard에 자산 디렉토리에서 파일을 복사하는 예를 들어이,이 질문에 대한 답을 ... Android: How to copy files in 'assets' to sdcard?

내부/파일 디렉토리에 복사하려면, 당신은이를 대체 할 것이다 비슷한 맞춰 ...

out = new FileOutputStream("/sdcard/" + files[i]); 

...

out = Context.openFileOutput(files[i], MODE_PRIVATE); 

openFileOutput(...)은 앱의/files 디렉토리에 쓸 수있는 파일을 자동으로 생성합니다. 마찬가지로 나중에 openFileInput(...)을 사용하여/files 디렉토리에서 읽을 수 있습니다.

+0

이 튜토리얼, 블로그 포스트, dev-note 같은 것을 볼 수있는 방법이 있습니다. 그런 경우라면 실제로 어떻게하는지 모르겠습니다. – gardian06

+0

@ gardian06 : 편집 내 대답은 – Squonk

+0

표시된 부분을 참조하십시오. 나는 이걸 생각하고 일부 입력 싶었어. 나는 드로어 블 사용이라는 싱글 톤 프레임 워크 외부에 존재할 수 있기 때문에 assets 디렉토리의 모든 것이 더 높은 오버 헤드를 가지기 때문에 드로어 블에서 이미지 (약 60 정도)를 유지할 수 없을 것입니다. 그런 다음 뷰를 구성하기 위해 파일을 읽는 for 루프 내에서 case 스위치를 사용하십시오. – gardian06