2012-11-08 3 views
0

나는 간단한 애셋 디렉토리 목록에 어려움을 겪고 있습니다. 나는 다음과 같은 구조 (대략 말하기)이 : 내가 원하는 건이 부모 자산 디렉토리의 목록 (예 : dirA, dirB, 테스트가애셋 폴더로 고생하기

-dirA 
--data.xml 
--AudioSUBdir 
---some files here 
--VideoSUBdir 
---some files here 
-dirB 
--data.xml 
--AudioSUBdir 
---some files here 
-test  
--SUBtestDir 

입니다, 나는 다음 인 data.xml 파일을 읽고의 기준으로합니다 이것은 하위 디렉토리의 내용으로 무언가를합니다).

내가 원하는 두 개의 문자열을 얻는 것은 쉬운 것이라고 생각 :

try { 
    String[] fileNames; 
    fileNames = getAssets().list(""); 
    for(String name:fileNames){ 
     // process it, e.g. write it out } 
} catch (IOException e) {} 

그러나, 무엇을 내가 갖는 것은 AudioSUBdir, dirA, dirB, VideoSUBdir, 웹킷 (같은 더 저주 웹킷이되지 않습니다이다 !는

  • 이 마술을 표시하지해야하는 위치 즉, 심지어 하위 디렉토리를 읽고,

    • 이 디렉토리 구조를 무시 : 전혀) 동시에 여러 이상한 일을하고있는 것 같다 웹킷 디렉토리 전체 프로젝트 폴더
    • 완전히

    그래서 제 질문은 두 가지 "테스트"디렉토리 (반) 난 그냥 얻을 어떻게

    1. 를 무시에 어떠한 것도 없지만 루트 폴더 (나중에 처리 할 파일 폴더/data.xml의 존재 여부를 테스트하고 응용 프로그램이 무엇이든해야합니다)
    2. 무슨 일이 일어나는지에 대한 설명. 나는 이론적으로 그것들을 원하지 않지만 서브 디렉토리를 쓴다는 사실을 다룰 수있다. 나는 그것이 테스트 폴더를 무시한다는 사실을 극복 할 수있다. (아마 비어 있기 때문일까? - 비어있는 것, 파일이 아니라 서브 디렉토리 만 포함하고, 어쨌든 ...) 그러나 웹킷 폴더는 어디에서 오는가? 그것은 apk buidling 프로세스에 의해 어떻게 든 "포스트 생성"됩니까?
    3. 모든 하위 폴더가 실제로 하나의 루트로 축소되어 있다는 느낌이 들었습니다. 동일한 이름의 파일이 빌드 프로세스 중에 충돌한다는 것을 의미합니까?
  • +1

    'adb shell'을 사용하여 수동으로 디렉토리 구조를 확인해 보셨습니까? 이것은 장치 디렉토리 구조에 대한 Linux 명령 행 쉘을 제공합니다. 'cd /'/ data/data//assets'을 사용하여 파일을 직접 볼 수 있습니다. –

    +0

    Code-Guru와 동일하지만 코드에 아무런 문제가 없음을 알았습니다. –

    +0

    글쎄, 나는 Windows에서 일하고있다. 그래서 내가 한 일은 필자가 수동으로 디렉터리 구조 (Eclipse에 의해 생성 된)를 수동으로 체크했다는 것이다. 그러나 예상대로 정상 디렉터리를 만듭니다. 그러나 디렉토리 목록은 내가 위에서 설명한 것을 수행합니다. – Malis

    답변

    0

    내 질문의 제 1 (주요한) 문제에 관한 한, 나는 그것을 알아 냈다고 생각합니다.

    • 폴더를 무시하는 그들에 관계없이
    • 출력이 알파벳 순으로 정렬되어 어떤 파일을 포함하지 않는 경우 :

      try { 
          String[] fileNames; 
          fileNames = MyAudioGuideApplication.this.getAssets().list(""); 
          for(String name:fileNames){ 
           if (Arrays.asList(getResources().getAssets().list(name)).contains("data.xml")) 
           process.the.file.here 
          } 
      } catch (IOException e) {} 
      

      는 여전히에 getAssets 작동하지만 최소한 다음이 끌 것으로 보인다 방법을 정확하게 확실하지 않다 루트 폴더에서 호출 구조

    • - 즉 ... 목록 ("") - 심지어 하위 디렉토리를 나열

    아마도 내가 가진 것처럼 누군가가 고생 할 수 있습니다.