Android 将inputStream转换为FileInputStream?

Android 将inputStream转换为FileInputStream?,android,inputstream,fileinputstream,Android,Inputstream,Fileinputstream,我遇到了一个问题-我需要从Android APK读取SecretKey(例如key.keystore),对于我的应用程序,它必须作为FileInputStream读取,但从资产中我只能获得inputStream。如何将inputStream转换为FileInputStream?或者,是否有其他方式,例如,如何从资源中以fileInputStream的形式访问文件 谢谢我认为这是不可能的,因为FileInputStream只是文件的InputStream。它为您从定义的文件中获取InputStre

我遇到了一个问题-我需要从Android APK读取SecretKey(例如key.keystore),对于我的应用程序,它必须作为FileInputStream读取,但从资产中我只能获得inputStream。如何将inputStream转换为FileInputStream?或者,是否有其他方式,例如,如何从资源中以fileInputStream的形式访问文件


谢谢

我认为这是不可能的,因为FileInputStream只是文件的InputStream。它为您从定义的文件中获取InputStream,之后您将使用普通的InputStream


Android已经为你做了这项工作。那么为什么需要FileInputStream呢?

我想您指的是返回InputStream的文件。无需将其“转换”为FileInputStream,只需获取对InputStream的引用并使用它(如果需要,将其包装在BufferedInputStream中)。

为什么特别需要FileInputStream?通常,您不必关心InputStream的底层实现,只需从中读取即可。也许你的实现应该与InputStream无关。

你是对的,连续16个小时的编程让我很生气:-)你可能想要一个FileInputStream,因为你想知道文件的长度,除非有一种方法我还没有找到。我在FileInputStream上没有看到任何
getLength()
-方法,所以我不确定你的目的是什么。此外,如果它是您放入APK的一项资产,那么您知道它是文件大小。FileInputStream只是从“物理”文件中获取InputStream(读取文件内容)的一种方便方式。抱歉@Lukas Knuth,我把自己弄糊涂了!但是,我使用未压缩资源的FileInputStream来完整读取其数据:AssetFileDescriptor afd=context.getResources().openRawResourceFd(R.raw.myresource);FileInputStream fis=afd.createInputStream();数据=新字节[(int)afd.getLength()];DataInputStream dis=新的DataInputStream(fis);dis.readFully(数据);dis.close();