Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将文件从内部存储器加载到InputStream的方式与从资产加载的方式相同_Java_Android_Inputstream_Fileinputstream_Bufferedinputstream - Fatal编程技术网

Java 将文件从内部存储器加载到InputStream的方式与从资产加载的方式相同

Java 将文件从内部存储器加载到InputStream的方式与从资产加载的方式相同,java,android,inputstream,fileinputstream,bufferedinputstream,Java,Android,Inputstream,Fileinputstream,Bufferedinputstream,我正在从以下资产中成功加载并使用PKCS12文件Cert.pfx: String certLocation = "certificates/Cert.pfx"; InputStream isCert = null; try { isCert = getAssets().open(certLocation); } catch (Exception e) { Log.d(TAG, "Could not get Assets"); } // Work with the cer

我正在从以下资产中成功加载并使用PKCS12文件Cert.pfx:

String certLocation = "certificates/Cert.pfx";
InputStream isCert = null;
try {
    isCert = getAssets().open(certLocation);
} catch (Exception e) {
    Log.d(TAG, "Could not get Assets");
    }

// Work with the certificate
我现在也在试着做同样的事情,但是我在安卓系统的存储中阅读

File sdCard = Environment.getExternalStorageDirectory();
File dir = new File (sdCard.getAbsolutePath() + "/PrintableRSA");
File cert = new File(dir,"Cert.pfx");

InputStream isCert= null;

try {
    isCert = new BufferedInputStream(new FileInputStream(cert));
    isCert.close();
    Log.d(TAG,"Sucsess!");
} catch (Exception e) {
    Log.d(TAG, "Could not load the file");
}

   // Same work with the certificate
文件加载成功,但当我进一步使用从存储器加载的isCert InputStream时,它不起作用。因此,我怀疑这些文件是不相等的

我还尝试了
InputStream isCert=FileInputStream(cert)未成功


如何解决此问题

您显然无法在标记为“使用证书进行相同的工作”的点上使用InputStream,因为您已经在该点上调用了
close()


完成流后,将调用移动到
close()
到。

这取决于“不工作”的含义…为什么将外部内存称为内部内存?因为如果外部内存不可用,android会自动选择内部内存。这就是我想要的。我检查了我的原始代码。我在
isCert
声明和
isCert.close()语句之间有一个
this.myCert=isCert
。我错误地认为InputStream在该点被复制。我猜当
isCert
关闭时,
this.myCert
也会变成
null
。你能证实这一点吗?