Java 将InputStream转换为文件对象
我想在Spring应用程序中使用Java 将InputStream转换为文件对象,java,spring-boot,Java,Spring Boot,我想在Spring应用程序中使用loadKeyMaterial()api时传递一个文件对象。我使用一个jar文件来运行我的应用程序,在直接访问jar中的文件时遇到了这个问题。 因此,我使用InputStream从资源中访问该文件。 如何将此InputStream转换为loadKeyMaterial()的File对象?您可以使用使用KeyStore而不是File参数的重载。KeyStore可以从流中加载,在中有一个例子。您可以使用重载来使用KeyStore而不是文件参数。KeyStore可能是从流
loadKeyMaterial()
api时传递一个文件
对象。我使用一个jar文件来运行我的应用程序,在直接访问jar中的文件时遇到了这个问题。
因此,我使用InputStream
从资源中访问该文件。
如何将此InputStream
转换为loadKeyMaterial()
的File
对象?您可以使用使用KeyStore
而不是File
参数的重载。KeyStore
可以从流中加载,在中有一个例子。您可以使用重载来使用KeyStore
而不是文件
参数。KeyStore
可能是从流中加载的,这里有一个例子。确实可能是重复的,但是在某个地方创建一个临时文件,其中的密钥听起来不太理想。当然,打包在jar中的密钥也不是很安全,但是比把它们放在temp文件夹中要好一步@来自上面链接的anchreg:是否可以从他们提到的InputStream创建文件对象,以创建File File=new File();然而,我已经看到,当我们创建一个jar时,我们不能直接访问一个文件。因此,我不确定在resources文件夹中的何处创建该临时文件。@ewramner..那么如何继续该方法?@pixelWorld,您可以在JAR之外读/写文件,只要运行JVM进程的用户具有所需的权限。Jiri Tusek的答案似乎很适合,你不能使用重载方法吗?确实可能是重复的,但在某个地方创建一个临时文件,其中的键听起来不太理想。当然,打包在jar中的密钥也不是很安全,但是比把它们放在temp文件夹中要好一步@来自上面链接的anchreg:是否可以从他们提到的InputStream创建文件对象,以创建File File=new File();然而,我已经看到,当我们创建一个jar时,我们不能直接访问一个文件。因此,我不确定在resources文件夹中的何处创建该临时文件。@ewramner..那么如何继续该方法?@pixelWorld,您可以在JAR之外读/写文件,只要运行JVM进程的用户具有所需的权限。Jiri Tousek的答案似乎很合适,你能不能不使用重载方法?我必须使用SSLContexts.custom().loadKeyMaterial()api来初始化SSLContext对象,我看不出使用上述解决方法我能做到这一点。我必须使用SSLContexts.custom().loadKeyMaterial()api来初始化SSLContext对象,我看不出有了上述解决办法,我就可以做到这一点。