Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android中访问文件_Java_Android_Filesystems - Fatal编程技术网

Java 在Android中访问文件

Java 在Android中访问文件,java,android,filesystems,Java,Android,Filesystems,在安卓系统中,有没有一种简单地通过文件名和路径访问文件的方法 我正试图将一些代码从一个普通的Java项目迁移到Android中,在这个项目中,.wav文件存储在\src(坏习惯?)的子目录中。Android无法使用相同的相对文件路径访问这些文件 Android文件系统中是否有这些文件的文件路径,或者根本不可能这样做 我读过一些关于Assets文件夹的内容,所以我知道您可以使用它将文件复制到应用程序位置,但似乎需要更改很多代码,因为我认为这不是一个大问题 提前感谢您的帮助 如果要随应用程序一起发送

在安卓系统中,有没有一种简单地通过文件名和路径访问文件的方法

我正试图将一些代码从一个普通的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”);