@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Path("/upload")
public String upload(@FormDataParam("file") InputStream inputStream) {
...
inputStream.close(); // necessary?
}
对于接受文件输入的API端点,我们是否需要手动关闭InputStream
或框架是否为我们执行此操作?
我检查了Jersey docs,但找不到任何相关信息。
寻找可靠的来源或某种方式来验证它。
答案 0 :(得分:0)
您有责任关闭InputStream。
泽西岛本质上不知道何时关闭你的小溪。
答案 1 :(得分:0)
1)在您使用InputStream之后,您可以认为关闭它是安全的。
2)您也可以使用Jersey ClosableService注册InputStream,根据其文档,它将为您关闭InputStream。 ClosableService
我希望有所帮助。
答案 2 :(得分:0)
我只是想知道同一件事,并在调试器中进行了尝试。泽西岛不会为您关闭视频流。
我认为最优雅的方法是使用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) {
//...
}