Java 有没有办法从InputStream获取文件

Java 有没有办法从InputStream获取文件,java,file,io,inputstream,outputstream,Java,File,Io,Inputstream,Outputstream,我当前正在读取以下文件: InputStream inputStream = MyClass.class.getClassLoader().getResourceAsStream(FILE); 是否有任何方法可以从这个InputStream获取文件,以便以后写入。 或者可以将InputStream转换为指向完全相同文件的OutputStream? 我发现getResourceAsStream()对于OutputStream不存在,您可以使用它 File file = new File(MyCl

我当前正在读取以下文件:

InputStream inputStream = MyClass.class.getClassLoader().getResourceAsStream(FILE);
是否有任何方法可以从这个
InputStream
获取文件,以便以后写入。 或者可以将
InputStream
转换为指向完全相同文件的
OutputStream
? 我发现
getResourceAsStream()
对于
OutputStream

不存在,您可以使用它

File file = new File(MyClass.class.getResource(FILE).toURI());
FileOutputStream stream = new FileOutputStream(file);
它将在IDE中工作,或者如果您的应用程序是web应用程序(war)。
但是,如果您正在编写一个jar应用程序,那么在您构建它时它将不起作用,因为文件将在jar包中,您不能以这种方式编写它。在这种情况下,您应该将文件存储在外部(而不是资源中)。

这是否回答了您的问题?不需要创建新文件,然后复制内容。我想获得与inputstream引用的文件完全相同的文件。inputstream没有此信息。更重要的是,应用程序中的资源甚至不总是可以表示为
文件
,如果该资源位于JAR文件中,这就不起作用了,通常情况下,在运行时无法更改资源。要在jar归档文件中编辑文件,您需要将其解压、重写并打包。即使你做了这些奇怪的操作,你也无法使用更改过的文件,因为JVM会加载旧的jar。我知道,这就是为什么我评论说你的答案在大多数情况下都不起作用。我回答的要点是“你应该将文件存储在外部(而不是资源中)”。如果有人错过了,我很抱歉