Keystore-java 输入流

Keystore-java inputstream

在下面的代码中,为什么我们使用 FileInputStream?为了什么目的?不要说参考 java 文档,wiki 或任何东西。 我需要一个实际的答案。

KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
// get user password and file input stream
char[] password = getPassword();

java.io.FileInputStream fis = null;
try {
    fis = new java.io.FileInputStream("keyStoreName");
    ks.load(fis, password);
} finally {
    if (fis != null) {
        fis.close();
    }
}

KeyStore.load 不带 FileInputStream。它需要一个 InputStream 作为参数,因为 FileInputStream 扩展 InputStream 你可以将它作为参数传递。为什么 KeyStore 需要输入流?因为密钥库将其结构保存为字节流。为了取回存储的状态,应该有一种从某个地方加载的机制。 KeyStore 设计师决定使用 InputStream 作为正确的选择。他们可以很容易地设计一个以 byte[] 作为参数的加载方法。

它以输入流作为参数来读取作为信任库的cacerts文件。

为了在文件流中加载指定的Keystore。