2012-03-16 74 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(); 
    }