Android:如何找到资产文件夹的绝对路径?

Posted

技术标签:

【中文标题】Android:如何找到资产文件夹的绝对路径?【英文标题】:Android: How to find the absolute path of the assets folder? 【发布时间】:2011-06-29 03:54:53 【问题描述】:

我需要在我的应用程序中获取资产文件夹的绝对路径,因为我想使用网络服务器在其中提供文件并且它需要绝对路径。这可能吗?

我原以为可能会有这样的事情:

String rootDir = getAssets().getRootDirectory();

但没有。

任何帮助表示赞赏,干杯。

【问题讨论】:

Related question关于资产的文件URI。 【参考方案1】:

这可能吗?

没有。没有“[您的]应用程序中资产文件夹的绝对路径”。资产存储在 APK 文件中。

在特定情况下,例如提供给 WebView 的 URL,您可以使用特殊的 file:///android_asset 基本 URL 来引用资产中的文件。

【讨论】:

我通过使用“file:///android_asset/loading_loop.json”得到了 FileNotFoundException【参考方案2】:

您始终可以将文件从 APK 中的资产目录复制到设备上的文件夹,然后提供该文件夹。

【讨论】:

大多数情况下,这会慢得让人无法接受,除非您的文件数量很少。【参考方案3】:

作为mentioned,无法通过设备文件系统中的绝对路径访问Android资产。因此,每当您必须为方法提供文件系统路径时,您就很不走运了。

但是,在您的情况下,还有其他选择:

我想使用网络服务器提供文件,它需要绝对路径。

仅当您想使用网络服务器提供的默认机制将文件作为静态文件提供时,才需要绝对路径。但是网络服务器要灵活得多:您可以将 URL 中的任何路径映射到您可以访问的任何数据源:文件、数据库、Web 资源、Android 资源、Android 资产。具体如何操作取决于您使用的网络服务器。

例如,您可以自己定义任何以 https://example.com/assets/ 开头的 URL 都应映射到您的 Android APK 的 assets 文件夹。然后您可以open the asset as an InputStream 并将内容提供给网络服务器的客户端。

【讨论】:

以上是关于Android:如何找到资产文件夹的绝对路径?的主要内容,如果未能解决你的问题,请参考以下文章

Android 文件绝对路径和Content开头的Uri互相转换

如何从包含 android 中的绝对文件路径的字符串中获取文件夹名称?

直接从Android文件管理器打开html页面时如何正确设置背景图像的绝对路径

android如何通过path得到uri?

如何在给定两个绝对路径的情况下找到相对路径?

获取文件的绝对路径