【发布时间】:2013-06-17 02:37:17
【问题描述】:
我想为存储在手机下载文件夹中的文件创建一个输入流。 早些时候,我将所需的文件作为资产,并使用以下代码阅读它:
InputStream fin;
fin = getAssets().open(FILENAME);
但是现在我希望能够将存储在我的下载文件夹/mnt/sdcard/Download 中的文件作为 InputStreamNOT 作为 FileInputStream 对象打开。我正在使用一个只需要 InputStream 作为参数的库,所以我不能使用 FileInputStream
方法,因为如果我这样做并且应用程序停止,我会得到 fatal exception。
我该怎么做?我试图从文档中找到一些辅助函数,但找不到。
编辑:我也尝试将代码编辑到这个-
String path = "/mnt/sdcard/Download"+FILENAME;
fin = new BufferedInputStream(new FileInputStream(path));
但是,当我尝试读取文件时,应用程序仍然崩溃。
【问题讨论】:
-
试试这个:
AssetManager am = context.getAssets();和InputStream fin = am.open(FILENAME);或者你也可以这样尝试:InputStream fin = openFileInput(FILENAME); -
感谢您的回复@g00dy。但我认为函数
openFileInput返回一个FileInputStream而不是我想要的InputStream。如果您详细说明您的第一个解决方案,我将不胜感激。 -
看起来您是 Java 面向对象的新手。每个 FileInputStream 都是一个 InputStream,因为它是 FileInputStream 的一个超类。在 Eclipse 中选择 FileInputStream 文本并按 F4。然后你就可以自己看结构了。
标签: android file-io inputstream