@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Path("/upload")
public String upload(@FormDataParam("file") InputStream inputStream) {
...
inputStream.close(); // necessary?
}
对于接受文件输入的APIendpoint,我们需要手动关闭InputStream
还是框架为我们这样做?
我查了新泽西的文件,但找不到任何关于它的信息。
寻找可靠的来源或某种方式来验证它。
我只是想知道同样的事情,并在调试器中进行了尝试。泽西不会为你关闭河流。
我认为最优雅的方法是使用try with resources,它可以接受自Java 9以来的任意表达式,并为您调用close()
。
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Path("/upload")
public String upload(@FormDataParam("file") InputStream inputStream) {
...
try (inputStream) {
//...
} catch (IOException e) {
//...
}
1)在您使用了输入流之后,您可以假设关闭它是安全的。
2) 您还可以向Jersey ClosableService注册InputStream,根据其文档,它将为您关闭InputStream。ClosableService
我希望这能有所帮助。
关闭InputStream是您的责任。
Jersey不知道何时关闭流。
问题内容: 我想知道,在关闭阅读器之后,是否需要关闭InputStream? 问题答案: 不,您不必。 由于Java中用于流的装饰器方法可以通过将新流或读取器附加到其他流上来构建新流或读取器,因此实现将自动对其进行处理。 如果查看其来源,则会看到: 因此,关闭操作实际上关闭了底层的流读取器。 编辑:我想确保关闭也可以在输入流上工作,请继续关注。 签入 在调用sd的close时调用。
问题内容: Commons-IO有一种方法,可以从输入流中读取所有内容: 我的问题是使用后是否应手动关闭输入流? 我以为IOUtils可能会关闭它,因为它已读取所有内容,但是我在源代码中找不到它。 问题答案: Javadoc说: 只要有可能,此类中的方法就不会刷新或关闭流。这是为了避免对流的来源和进一步使用做出不可移植的假设。因此,调用方仍然负责在使用后关闭流。
问题内容: Java中的InputStreams和OutputStreams是否在销毁时关闭()?我完全理解这可能是错误的形式(尤其是在C和C ++世界中),但是我很好奇。 另外,假设我有以下代码: 无名的FileInputStream是否在p.load()之后超出范围,并因此被破坏,就像C ++范围规则一样?我尝试在Google上搜索Java的匿名变量范围,但这并没有达到我的预期。 谢谢。 问题
问题内容: 我正在使用包裹在FileReader周围的BufferedReader读取本地文件: 我需要close()的为好,或将包装处理这个问题?我看过代码,人们在这里做这样的事情: 从Servlet调用此方法,并且我想确保我没有打开任何句柄。 问题答案: 没有。 根据javadoc为和关闭流 以及
问题内容: 我需要2个文本字段和1个文件上传。当我只需要文本字段时,一切都正常,但是当我需要文件上传时,即使我选择了一个文件,验证错误仍然会提示需要文件。有人知道我在做什么错吗?提前谢谢了。 //视图 //控制器 问题答案: 我找到了一种完全符合我想要的解决方案。 我变了 至