gpt4 book ai didi

android - 如何从 R.raw 资源获取 java.io.File

转载 作者:行者123 更新时间:2023-11-29 19:03:43 27 4
gpt4 key购买 nike

我向我的 Android Studio 项目添加了一个原始资源:

然后我需要得到一个指向它的 java.io.File 实例。

我已经尝试了三件事,但是找不到文件并且 File.exists() 等于 false:

// Option 1:
//
// com.example.myapp:raw/plano_metrobus
//
val fileName = resources.getResourceName(R.raw.plano_metrobus)
Log.w("xxx", fileName)
Log.w("xxx", File(fileName).exists().toString())

// Option 2
//
// android.resource://com.example.myapp:raw/plano_metrobus
//
val uri = Uri.parse("android.resource://" + fileName)
Log.w("xxx", uri.toString())
Log.w("xxx", File(uri.toString()).exists().toString())

// Option 3
//
// android.resource://com.example.myapp/2131427328
//
val uri2 = Uri.parse("android.resource://" + packageName + "/" + R.raw.plano_metrobus)
Log.w("xxx", uri2.toString())
Log.w("xxx", File(uri2.toString()).exists().toString())

创建 File 对象的正确方法是什么?

最佳答案

Then I need to get a java.io.File instance pointing to it.

这不是直接可能的。它是您开发机器上的一个文件。它不是设备上的独立文件——它只是设备上 APK 文件中的一个条目。

What is the right way to get a File object?

理想情况下,您不需要。您无法修改资源,希望您使用的任何接受 File 的资源也可以接受 InputStream。如果是这样,use openRawResource() on a Resources object ,您可以通过在 Context(例如,ActivityService)上调用 getResources() 来获得其中之一.

如果您使用的是一些编写不当且需要文件的第三方库,则需要使用 openRawResource() 方法,然后从 InputStream< 复制字节 到您控制的某个文件(例如,在 getCacheDir() 中)。然后您可以使用生成的文件。

关于android - 如何从 R.raw 资源获取 java.io.File,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47964770/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com