2012-03-16 79 views
0

Android中有沒有一種方法可以簡單地通過文件名和路徑訪問文件?訪問Android中的文件

我想從一個普通的Java項目中移動一些代碼到Android中,其中.wav文件存儲在\ src的子目錄中(壞習慣?)。 Android無法清楚地使用相同的相關文件路徑訪問這些文件。

在Android文件系統中是否存在這些文件的文件路徑,還是根本無法做到這一點?

我已經閱讀了有關Assets文件夾的一些內容,所以我意識到可以使用它將文件複製到應用程序位置,但似乎有很多代碼需要改變以適應我的想法不是一個大問題。

在此先感謝您的幫助。

+2

我不敢肯定,如果在\ src文件夾中的文件附帶的apk擺在首位..它必須是資產的文件夾 – Shrey 2012-03-16 17:51:07

+0

看看這個 - 它似乎是你需要的東西... http://stackoverflow.com/questions/4210239/how-to-use-relative-path-instead-of-absolute-path – Archer 2012-03-16 17:54:18

+0

我不認爲它可以工作,即使它是可編譯的。由於資產是您可以使用文件夾結構保留原始文件的唯一地方。 (另一個地方是Res \ raw,它沒有文件夾結構。) – Calvin 2012-03-16 17:58:43

回答

2

如果您想將您的文件與您的應用程序一起發送,那麼沒有其他選擇,然後將您的文件放入資產文件夾中。你可以通過自己的URL來訪問他們:

文件:///android_asset/your_file.wav

這是在網頁中非常有用。你可以有例如存儲在資產文件夾一些CSS並引用它,如下所示:

<link rel="stylesheet" type="text/css" href="file:///android_asset/your.css" /> 

如果您要訪問的Java代碼的文件,則有兩種選擇。

沒有任何其他項目文件夾打包成.apk文件的文件名通過AssetManager打開的InputStream爲您的文件文件,除了libs文件夾,這應該分發庫,和res文件夾,這是存儲資源只能通過資源方法/裝載機訪問。內容文件必須在資產文件夾中。

+0

好的,謝謝@vitakot,雖然有一個快速點 - 對於路徑android_asset,這總是這兩個詞還是有任何鏈接到有問題的包或應用程序名稱?例如File example = new File(「android_asset/example.wav」); – NIM 2012-03-16 18:46:49

+0

等一下,我不得不編輯我的答案,這是不正確的。 – vitakot 2012-03-16 18:59:05

1

對我來說,我把它在res /原始文件夾

MediaPlayer player = new MediaPlayer(); 
AssetFileDescriptor afd = resources.openRawResourceFd(R.raw.music.wav); 
    if (afd != null) { 
     player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), 
       afd.getLength()); 
     afd.close(); 
    }