【发布时间】:2012-05-11 06:35:27
【问题描述】:
我在资产文件夹中有一个文本文件,我需要将其转换为 File 对象(而不是 InputStream)。当我尝试这个时,我得到“没有这样的文件”异常:
String path = "file:///android_asset/datafile.txt";
URL url = new URL(path);
File file = new File(url.toURI()); // Get exception here
我可以修改它以使其正常工作吗?
顺便说一句,我有点尝试“通过示例编写代码”,查看我项目中其他地方引用 assets 文件夹中 HTML 文件的以下代码
public static Dialog doDialog(final Context context) {
WebView wv = new WebView(context);
wv.loadUrl("file:///android_asset/help/index.html");
我承认我并不完全理解上述机制,所以我试图做的事情可能行不通。
谢谢!
【问题讨论】:
-
为什么要将其读入 File 对象?我相信您需要从资产中获取数据作为 InputStream 并将其作为指向物理位置的 outputStream 写出。然后您可以将其作为 File 对象打开。 stackoverflow.com/questions/4447477/…
-
我试图避免复制资产文件,但如果一切都失败了,我会这样做。我需要 File 的原因是它被用作我无权访问其代码的 ctor 中的参数,这是该类存在的唯一 ctor。
-
啊,有道理。也许:将副本复制到 SDCARD 上,将其传递给构造函数,并在完成后将其删除?如果文件相同并且您始终将其保存到 SDCARD 上的相同位置,则您只会制作 1 个副本(它只会覆盖以前的版本)。