2017-10-18 234 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