2012-11-08 90 views
0

我一直在用簡單的資產目錄列表掙扎。我有以下結構(粗略地說):與資產文件夾苦苦掙扎

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

我要的是母公司的資產目錄的列表(即DIRA,DIRB和測試,然後我會讀data.xml中的文件和對基礎這對subdirs的內容做了些什麼)。

我認爲獲得所需的兩個字符串很容易:

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

然而,正是我得到的是類似AudioSUBdir,DIRA,DIRB,VideoSUBdir,WebKit的(不過是沒有該死的webkit !有的話) 似乎在同一時間做幾件奇怪的事情:

  • 它忽略的目錄結構,即它不應該
  • 奇蹟般地顯示讀取甚至子目錄WebKit的目錄雖然有沒有任何在整個項目中的文件夾
  • 它忽略了「測試」的目錄完全

所以我的問題是兩個(半)

  1. 我怎麼得到公正根文件夾(我想稍後測試它們是否存在文件夾/ data.xml,它將被處理,應用程序將執行任何它應該執行的操作)
  2. 對發生了什麼的任何解釋。理論上我可以處理這樣的事實,即使我不想要它們,它甚至會寫出子類。我甚至可以忽略它忽略了測試文件夾的事實(可能是因爲它們是空的? - 很空,只包含一個子目錄,而不是一個文件,但無論如何...)但是地獄是從哪裏來的webkit文件夾?它是不是由apk buidling過程「後生成」?
  3. 我感覺所有的子文件夾實際上已經合併爲一個根。這是否意味着在構建過程中同名的文件會發生衝突?
+1

您是否嘗試過使用'adb shell'手動檢查目錄結構?這爲您提供了Linux設備目錄結構的命令行shell。你可以'cd'到'/ data/data//assets'來直接查看這些文件。 –

+0

與Code-Guru相同,我的代碼沒有出現任何問題。 –

+0

嗯,我在Windows上工作,所以我所做的是,我當然手動檢查了目錄結構(由Eclipse生成)。但它會按預期創建正常的目錄。然而,目錄列表完成了我上面描述的內容。 – Malis

回答

0

就我的問題的第一個(也是主要)問題而言,我想我已經弄明白了。

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作品,但至少有以下似乎究竟如何轉出:

  • 文件夾都將被忽略,如果它們不包含文件
  • 輸出按字母順序排序不分結構
  • 從根文件夾調用時 - 即...列表( 「」) - 它列出甚至子目錄

也許它可以幫助像我一樣掙扎的人。

相關問題