2017-10-18 218 views
0

我已将root-CA.crt文件包含在app/src/main/assets中。
FileReader路径错误 - 文件未找到


我输入了这个并在仿真器上运行。

PEMParser reader = new PEMParser(new FileReader("file:///android_asset/root-CA.crt")); 

      X509CertificateHolder caCertHolder = (X509CertificateHolder) reader.readObject(); 
      reader.close(); 


而得到这个错误:

10-18 20:47:34.601 10617-10617/? W/System.err: java.io.FileNotFoundException: /file:/android_asset/root-CA.crt: open failed: ENOENT (No such file or directory) 
10-18 20:47:34.601 10617-10617/? W/System.err:  at libcore.io.IoBridge.open(IoBridge.java:416) 
10-18 20:47:34.601 10617-10617/? W/System.err:  at java.io.FileInputStream.<init>(FileInputStream.java:78) 
10-18 20:47:34.601 10617-10617/? W/System.err:  at java.io.FileInputStream.<init>(FileInputStream.java:105) 
10-18 20:47:34.611 10617-10617/? W/System.err:  at java.io.FileReader.<init>(FileReader.java:66) 

为什么我得到这个错误?我已经提到了正确的道路。但为什么?

回答

1

file:///android_asset只对WebView有意义。它不能用于其他地方。

使用AssetManager及其open()方法获取您的资产所代表内容的InputStream。根据需要将其包装在InputStreamReader中。

+0

谢谢...!上面的'FileReader(“file:///android_asset/root-CA.crt”)'代码或整个代码的最终结果是什么?我对android开发非常陌生。 – Senura

+0

@Senura:我不能告诉你。您通过调用'Context'(例如'Activity')的'getAssets()'来获得'AssetManager',并且我不知道这个代码驻留在哪里。在[本示例活动]中(https://github.com/commonsguy/cw-omnibus/blob/v8.7/Camera/EXIFRotater/app/src/main/java/com/commonsware/android/exif/MainActivity.java ),我使用'open()'在图像上获得一个'InputStream',打包成一个资产,并传递给'ExifInterface'对象。 – CommonsWare

+0

谢谢你......我已经完成了你所告诉的......现在它可以工作。感谢分享你的知识。 +1 – Senura