Java 在Android中访问文件
在安卓系统中,有没有一种简单地通过文件名和路径访问文件的方法 我正试图将一些代码从一个普通的Java项目迁移到Android中,在这个项目中,.wav文件存储在\src(坏习惯?)的子目录中。Android无法使用相同的相对文件路径访问这些文件 Android文件系统中是否有这些文件的文件路径,或者根本不可能这样做 我读过一些关于Assets文件夹的内容,所以我知道您可以使用它将文件复制到应用程序位置,但似乎需要更改很多代码,因为我认为这不是一个大问题Java 在Android中访问文件,java,android,filesystems,Java,Android,Filesystems,在安卓系统中,有没有一种简单地通过文件名和路径访问文件的方法 我正试图将一些代码从一个普通的Java项目迁移到Android中,在这个项目中,.wav文件存储在\src(坏习惯?)的子目录中。Android无法使用相同的相对文件路径访问这些文件 Android文件系统中是否有这些文件的文件路径,或者根本不可能这样做 我读过一些关于Assets文件夹的内容,所以我知道您可以使用它将文件复制到应用程序位置,但似乎需要更改很多代码,因为我认为这不是一个大问题 提前感谢您的帮助 如果要随应用程序一起发送
提前感谢您的帮助 如果要随应用程序一起发送文件,则没有其他选项可将文件放入资产文件夹。您可以通过其url访问它们: file:///android_asset/your_file.wav 这在网页中很有用。例如,您可以将一些CSS存储在assets文件夹中,并按如下方式引用它:
<link rel="stylesheet" type="text/css" href="file:///android_asset/your.css" />
如果您想访问Java代码中的文件,那么有两个选项
- 通过上述url获取并打开文件的InputStream
- 通过文件名打开文件的InputStream
除了本应分发库的libs文件夹和存储只能通过资源方法/加载程序访问的资源的res文件夹之外,没有其他项目文件夹打包到.apk文件中。内容文件必须位于资产文件夹中。如果要随应用程序一起发送文件,则没有其他选项可将文件放置在资产文件夹中。您可以通过其url访问它们: file:///android_asset/your_file.wav 这在网页中很有用。例如,您可以将一些CSS存储在assets文件夹中,并按如下方式引用它:
<link rel="stylesheet" type="text/css" href="file:///android_asset/your.css" />
如果您想访问Java代码中的文件,那么有两个选项
- 通过上述url获取并打开文件的InputStream
- 通过文件名打开文件的InputStream
除了本应分发库的libs文件夹和存储只能通过资源方法/加载程序访问的资源的res文件夹之外,没有其他项目文件夹打包到.apk文件中。内容文件必须在资产文件夹中。对于我来说,我将其放在res/raw文件夹中
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();
}
对我来说,我把它放在res/raw文件夹中
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();
}
我不确定\src文件夹中的文件是否首先随apk一起提供。。它必须是资产文件夹看看这个-它似乎是你需要的。。。我认为即使它是可编译的,它也不起作用。As asset是唯一可以保存具有文件夹结构的原始文件的地方。(另一个位置是Res\raw,它没有文件夹结构。)我不确定\src文件夹中的文件是否首先随apk一起提供。。它必须是资产文件夹看看这个-它似乎是你需要的。。。我认为即使它是可编译的,它也不起作用。As asset是唯一可以保存具有文件夹结构的原始文件的地方。(另一个地方是Res\raw,它没有文件夹结构。)好的,谢谢@vitakot,不过有一个要点-对于android_资产的路径,这总是这两个词,还是有任何指向有问题的软件包或应用程序名称的链接?e、 g.文件示例=新文件(“android_资产/example.wav”);好的,谢谢@vitakot,不过有一个要点-对于android_资产的路径,这始终是这两个词,还是有任何指向有问题的软件包或应用程序名称的链接?e、 g.文件示例=新文件(“android_资产/example.wav”);