我需要在我的应用程序中获取资产文件夹的绝对路径,因为我想使用网络服务器在其中提供文件并且它需要绝对路径。这可能吗?
我原以为可能会有这样的事情:
String rootDir = getAssets().getRootDirectory();
但没有。
任何帮助表示赞赏,欢呼。
这可能吗?
不。没有“[您的]应用程序中资产文件夹的绝对路径”。资产存储在 APK 文件中。
在某些情况下,例如提供给 a 的 URL WebView
,您可以使用特殊的file:///android_asset
基本 URL 来引用资产中的文件。
您始终可以将文件从 APK 中的资产目录复制到设备上的文件夹,然后提供该文件夹。
如前所述,无法使用设备文件系统中的绝对路径访问 Android 资产。因此,每当您必须为方法提供文件系统路径时,您就不走运了。
但是,在您的情况下,还有其他选项:
我想使用网络服务器提供文件,它需要绝对路径。
仅当您希望使用网络服务器为此提供的默认机制将文件作为静态文件提供时,才需要绝对路径。但是网络服务器要灵活得多:您可以将 URL 中的任何路径映射到您可以访问的任何数据源:文件、数据库、Web 资源、Android 资源、Android 资产。如何做到这一点取决于您使用的 Web 服务器。
例如,您可以自己定义任何以 开头的 URLhttps://example.com/assets/
都应映射到您的 Android APK 的 assets 文件夹。然后,您可以打开资产InputStream
并将内容提供给网络服务器的客户端。